Arduino Due

arduino, teensy, atmega, pic a jine (software, hardware)
Odpovědět
bronek999
Příspěvky: 521
Registrován: 6. 3. 2014, 6:50

2. 4. 2015, 10:39

Kopec zbytocnej prace. Podla schemy arduina je PA17-18 TWI1. Podla datasheetu k procesoru je to TWI0.
Na plosaku napis SDA1.
Uživatelský avatar
slezak77
Příspěvky: 1152
Registrován: 1. 6. 2012, 6:45

3. 4. 2015, 1:50

To jsou nervy :)
Držím Palce ať to ustojíš.
bronek999
Příspěvky: 521
Registrován: 6. 3. 2014, 6:50

4. 4. 2015, 3:08

Dotykovy panel som nakoniec rozbehal. Viem detekovat dotyk piatich prstov aj nejake tie zakladne gesta. Povodne som zabudol uzemnit kovovy ramik displeja a davalo to kopec nahodnych "dotykov"
Najblizsia robota bude upravit driver displeja (prevzady z arduino kniznice) nech vie kreslit viac nez stvorce (hlavne tlacitka) a reagovat na ne. To je uz nastastie len pisanie a pisanie, bez nejakeho hw ladenia.
bronek999
Příspěvky: 521
Registrován: 6. 3. 2014, 6:50

8. 4. 2015, 4:08

Tak uz funguje komplet cely hardver (bez ovladania freq.menica). Prve testovacie video so suborom>100kB.
https://www.youtube.com/watch?v=-cDmmYmFohE
Zatial mam jediny problem a to s kodom G2,G3. Musel som ich nahradit kratkymi useckami, skusim to poriesit zajtra.
Uživatelský avatar
packa
Příspěvky: 6940
Registrován: 7. 2. 2007, 6:42
Bydliště: Královehradecký kraj

8. 4. 2015, 5:42

ahoj to video je označeno jako soukromé
bronek999
Příspěvky: 521
Registrován: 6. 3. 2014, 6:50

28. 4. 2015, 9:45

Tak prve "frezovanie" s novym kontrolerom. Hned som prisiel na niekolko nedostatkov.
1.Kapacitny displej - s motormi si moc nerozumie a dalo dost prace odrusit to. Nabuduce by som kupoval uz len odporovy touch screen. Je aj lacnejsi.
2.Driver krokovych motorov M542. Enable vstup potrebuje logicku 1 a TinyG2 ma opacnu logiku. Prepisal som zdojaky TinyG2, fungovalo to v jednom smere osi a nazad nie. Znizil som tam ale predradne odpory na optoclenoch, takze namiesto pozadovanych 3.3V dalo Arduino maximalne 2.8V. Takze chyba mohla byt aj tam.

Nakoniec som vyskusal driver 3DM683 pre trojfazovy motor. K tymto driverom a motorom som to vlastne cele staval. Logika vstupu enable spravna (obnovil som zdrojaky zo zalohy) a vsetko chodilo ako malo. Akurat bolo este treba odladit to odrusenie. Uzemnit stroj, motory. Vreteno nemam pripojene, takze to uzemnene nebolo a po spusteni motorov sa uz nedalo klikat na displej.

Kontroler vie zatial frezovat podla G kodu vyberom suboru z SD karty, samostatne frezovat kruhove a obdlznikove tvary zadanych rozmerov a pre mna velmi podstatne frezovanie metrickych zavitov bez akehokolvek G kodu.
Proste zadam priemer zavitu, stupanie, priemer nastroja, pripadne upravim rychlost a zaber a idem.
Root
Příspěvky: 127
Registrován: 9. 1. 2013, 5:01
Bydliště: Valdice - Jičín

28. 4. 2015, 10:07

Machr
Uživatelský avatar
packa
Příspěvky: 6940
Registrován: 7. 2. 2007, 6:42
Bydliště: Královehradecký kraj

28. 4. 2015, 10:22

bronek999 píše:Tak prve "frezovanie" s novym kontrolerom. Hned som prisiel na niekolko nedostatkov.
1.Kapacitny displej - s motormi si moc nerozumie a dalo dost prace odrusit to. Nabuduce by som kupoval uz len odporovy touch screen. Je aj lacnejsi.
2.Driver krokovych motorov M542. Enable vstup potrebuje logicku 1 a TinyG2 ma opacnu logiku. Prepisal som zdojaky TinyG2, fungovalo to v jednom smere osi a nazad nie. Znizil som tam ale predradne odpory na optoclenoch, takze namiesto pozadovanych 3.3V dalo Arduino maximalne 2.8V. Takze chyba mohla byt aj tam.

Nakoniec som vyskusal driver 3DM683 pre trojfazovy motor. K tymto driverom a motorom som to vlastne cele staval. Logika vstupu enable spravna (obnovil som zdrojaky zo zalohy) a vsetko chodilo ako malo. Akurat bolo este treba odladit to odrusenie. Uzemnit stroj, motory. Vreteno nemam pripojene, takze to uzemnene nebolo a po spusteni motorov sa uz nedalo klikat na displej.

Kontroler vie zatial frezovat podla G kodu vyberom suboru z SD karty, samostatne frezovat kruhove a obdlznikove tvary zadanych rozmerov a pre mna velmi podstatne frezovanie metrickych zavitov bez akehokolvek G kodu.
Proste zadam priemer zavitu, stupanie, priemer nastroja, pripadne upravim rychlost a zaber a idem.

Tak to jsi se na tom docela vyřádil , chystáš se z toho udělat nějaký hezký přehledný balíček ( použité komponenty , schematko a sw ) a poskytnout nám jej ? prosím
bronek999
Příspěvky: 521
Registrován: 6. 3. 2014, 6:50

28. 4. 2015, 1:07

Zmeny v povodnom TinyG2 su ZATIAL minimalne. Okrem jedneho zakazaneho prerusenia len pridanie dvoch funkcii.

Navyse je v "balicku" jeden subor pre displej (a cele GUI -tlacitka), jeden subor pre dotykovy panel (odporovy je obsiahnuty uz v tom prvom subore), styri subory pre SD kartu s FAT32 pristupom a jeden subor s mojimi zmenami. Samozrejme aj main.cpp je zmeneny.

Schemu zatial nemam, ale kablikov je tam minimum. Vystupy som presmeroval na "Arduino piny" 22-53. Je to dvojrady konektor a dal som tam kablik so stareho IDE disku.
Samozrejme som vsade prepajkoval kolikove listy namiesto povodnych dutinkovych.
Dam to cele nejak dokopy a potom to zverejnim. Ak by bol nejaky vaznejsi zaujem tak by sa dala spravit nejaka "breakout" doska, ktora by sa naklikla na original Arduino a mala by SD kartu, priamo FPC konektor na displej a tiez externy konektor k driverom a snimacom. A bzuciak samozrejme :)) . Z ciny je to otazka mozno 7€ za kus.
Tiez by som tam dal konvertor UART-RS485 pre frekvencny menic.

GUI rozhranie je na programovanie velmi jednoduche, upravy zvladne aj zaciatocnik.
Jednoduchy priklad vytvorenia a obsluhy 8 tlacitok:

Kód: Vybrat vše

void metric_thread_inner(void)	//	Vnutorny metricky zavit
{
	const char* PN="Priemer nástroja";
	const char* PZ="Priemer závitu";
	const char* SZ="Stúpanie závitu";
	const char* BZ="Bočný záber";
	const char* RY="Rýchlosť";
	char buffer[100];
	uint8_t test=0;
	float PriemerNastroja = 6; 
	float Stupanie = 1.5;
	float PriemerZavitu = 30;
	float PriemerOtvoru;
	float BocnyZaber = 0.5;
	for(;;)
	{
		tft.fillScreen(RA8875_BLACK);
		tft.delete_all_objects();
		tft.button(10,CalcY(10,5,1),200,CalcHeight(10,5),PZ,1);
		tft.button(10,CalcY(10,5,2),200,CalcHeight(10,5),SZ,2);
		tft.button(10,CalcY(10,5,3),200,CalcHeight(10,5),PN,3);
		tft.button(10,CalcY(10,5,4),200,CalcHeight(10,5),BZ,4);
		tft.button(10,CalcY(10,5,5),200,CalcHeight(10,5),RY,5);
	
		tft.button(799 - 410,CalcY(10,4,4),200,CalcHeight(10,4),"Testuj Z-20",97);
		tft.button(799 - 200,CalcY(10,4,3),200,CalcHeight(10,4),"Frézuj závit",98);
		tft.button(799 - 200,CalcY(10,4,4),200,CalcHeight(10,4),"Späť",99);
		tft.textEnlarge(1);
		tft.textColor(RA8875_YELLOW,RA8875_BLACK);
		tft.textMode();
		sprintf(buffer,"%s %.3f[mm]",PZ,PriemerZavitu);
		tft.textWrite(220,5,0,0,buffer,ALINE_LEFT);
		sprintf(buffer,"%s %.3f[mm]",SZ,Stupanie);
		tft.textWrite(220,40,0,0,buffer,ALINE_LEFT);
		sprintf(buffer,"%s %.3f[mm]",PN,PriemerNastroja);
		tft.textWrite(220,75,0,0,buffer,ALINE_LEFT);
		sprintf(buffer,"%s %.3f[mm]",BZ,BocnyZaber);
		tft.textWrite(220,110,0,0,buffer,ALINE_LEFT);
		sprintf(buffer,"%s %.3f[mm]",RY,Rychlost);
		tft.textWrite(220,145,0,0,buffer,ALINE_LEFT);
		tft.redraw_all();
		PriemerOtvoru = PriemerZavitu - 2* Stupanie;   // Upravit !!!!
		if(PriemerNastroja > PriemerOtvoru)
		{
			tft.textColor(RA8875_BLACK,RA8875_RED);
			sprintf(buffer,"%s %.3f[mm]",PN,PriemerNastroja);
			tft.textWrite(220,75,0,0,buffer,ALINE_LEFT);
			beep(1000);
		}
		for (;;) 
		{
			tft.draw_press_unpress();
			if(Action1 == 1)
			{
				PriemerZavitu = tft.GetFloat(PZ,PriemerZavitu,0,10000);
				break;
			}
			if(Action1 == 2)
			{
				Stupanie = tft.GetFloat(SZ,Stupanie,0,10000);
				break;
			}
...................
			if(Action1 == 99)
			{
				return;
			}
                }
        }
}
PS : Zatial mam problem s alokaciou pamate. Funkcia malloc(200000) vrati pointer aj ked je RAM pamate podstatne menej. Ked alokujem volnu pamat, pouzijem ju a nasledne uvolnim tak vsetko funguje spravne. Ale neviem kolko volnej pamate vlastne mam. Ked som skusal na skusku vytvorit tlacidla sposobom "do nekonecna" tak mi to zamrzlo asi pri 780-tom tlacitku. Jedno tlacidlo potrebuje 48B + dlzka textu tak mi to vychadza na nejakych 40kB???
doncarlos
Příspěvky: 760
Registrován: 9. 1. 2008, 9:49

28. 4. 2015, 6:40

mallocfree ti vrátí velikost volné paměti pro malloc
bronek999
Příspěvky: 521
Registrován: 6. 3. 2014, 6:50

28. 4. 2015, 7:56

doncarlos píše:mallocfree ti vrátí velikost volné paměti pro malloc
nepoznam....ani google nepozna....bohuzial, alebo neviem hladat.
mozno nejaka nestandartna funkcia

standartne (v inych projektoch) volam fuknciu malloc aproximativne (s polovicou velkosti RAM pamate) a ak ju alokujem tak zvysim velkost o polovicu a ak nie tak ju o polovicu znizim. A samozrejme uvolnim a skusam znovu az kym sa nedostanem ku kroku velkosti 1.

Toto pouzivam napriklad pri AVR32, aj pri STM32. Mozny problem by mohol byt ze tinyG2 pouziva newlib?

Kód: Vybrat vše

U32 get_heap_free_size1( void )
{
  U32 high_mark= AVR32_SRAM_SIZE;
  U32 low_mark = 0;
  U32 size ;
  void* p_mem;

  size = (high_mark + low_mark)/2;

  do
  {
    p_mem = malloc(size);
    if( p_mem != NULL)
    { // Can allocate memory
      free(p_mem);
      low_mark = size;
    }
    else
    { // Can not allocate memory
      high_mark = size;
    }

    size = (high_mark + low_mark)/2;
  }
  while( (high_mark-low_mark) >1 );

  return size;
}
bronek999
Příspěvky: 521
Registrován: 6. 3. 2014, 6:50

18. 5. 2015, 6:37

Tak prvy pokus naozajstneho frezovania dopadol dobre. Teda frezovanie podla NC kodu zo suboru.
Horsie uz bolo ze po zapnuti frekv. menica som uz nemohol ovladat dotykom displej. Proste kapacitny displej a motory je velmi blba kombinacia a uz som objednal odporovy touch panel. Skusal som odrusit, filtrovat, napajat z baterie a nepomohlo nic. Od vykonovej casti je to oddelene cez optocleny, preto sa cudujem ze to neslo aspon z baterie.
Skusenost je neprenosna :(. Nastastie novy displej tu bude uz tento tyzden.

Zatial dorobim koncove spinace, az na ten problem s dotykovym displejom to vyzera ale velmi nadejne. pouzivam 6400 krokov na otacku (5mm stupanie skrutky) a rychlost posuvu mam zatial 3500mm/min. Na osi X a Y zvladne naprazdno aj 5000mm/min.
Uživatelský avatar
slezak77
Příspěvky: 1152
Registrován: 1. 6. 2012, 6:45

18. 5. 2015, 6:57

Blahopřeji
Jen tak dál, až to vychytáš úplně tak se těším, že se s námi podělíš zase o nějaká videa a nějaký celkový návod, klidně i za úplatu, je mi jasné, že jsi se na tom natrápil.
Perun s Tebou :twisted: :twisted: :twisted:
bronek999
Příspěvky: 521
Registrován: 6. 3. 2014, 6:50

26. 5. 2015, 10:24

Ked sa nedari tak sa nedari. Dnes prisiel novy displej s rezistivnym dotykovym panelom. Krabice neposkodena ale displej rozbity :(
Teda displej je OK ale dotykovy panel prasknuty krizom krazom a nepracuje spravne. Keby to bolo naopak tak to prelepim s toho povodneho displeja.
Medzitym som uz kupil druhe arduino DUE a cele zapojenie displeja a dotykoveho panelu je cez 6 vodicov. Aj s napajanim.
Takze znovu cakam na dotykovy panel na vymenu.
Uživatelský avatar
slezak77
Příspěvky: 1152
Registrován: 1. 6. 2012, 6:45

26. 5. 2015, 11:10

Ty kokso, to je mi líto, já jsem se těšil na nějaké nové video.
To je na pevné nervy, nebo hodně čokolády.
Perun :twisted: :twisted: :twisted:
Odpovědět

Zpět na „MCU“