
-----------------------------------
dcristi
15 Aug 2014 11:36


-----------------------------------
Cum adica ai comunicatia pe un singur fir ?
Tx si Rx sunt pe fire separate. Este adevarat ca sunt aceleasi la cele doua drivere, dar nu vad de ce ar trebui sa pui Tx si Rx in scurt.
Nu fac eu asta ca nu-mi bat singur cuie in talpa :)
Asa face synscan, se pare, pentru monturile care au motoare DC. In MC original Rx si Tx sunt in scurt. 
Vad ca si API-ul publicat de Sky-Watcher trateaza problema diferit, adica opreste Tx dupa ce trimite o comanda catre MC. Dau aici doar o parte din cod:

// Test if connect to DC motor board.
	private bool CheckIfDCMotor()
....
//// Enable TX driver.
	//EscapeCommFunction(hCom, SETRTS);
	//// Wait TX enabled
	//Sleep(20);
....
	//// Disable TX driver.
	//// EscapeCommFunction(hCom, CLRRTS);
....
	// IsDCMotor = TRUE;
	// // Disable TX driver if it is a DC motor controller.
	// EscapeCommFunction(hCom, CLRRTS);


Atmelul are PWM pe 16 biti implementat in hardware dar Arduino cred ca genereaza soft.
Asa e. Dar atunci cand folosesti frecvente mari, 20kHz in cazul asta, nu-ti mai ajunge frecventa procesorului ca sa beneficiezi de toti cei 16 biti.
Mi-ar trebui ca pentru fiecare pas al PWM sa am inca 65535 perioade de ceas pe care sa le numar.
20.000 (PWM) x 65.535 (rezolutie) = 1.310.700.000 Hz. Cam greu de obtinut asta.
Ca sa am rezolutia pe 16 bit trebuie sa micsorez frecventa PWM pana la 16 MHz / 65.535 = 800 Hz. cam putin. Calculul e facut pentru un procesor ce ruleaza la 16 MHz indiferent de producator.

Daca tot mergi pe steppere, atunci mai bine folosesti un driver dedicat. Nu are rost sa reinventezi roata in Arduino. Incearca numai sa implementezi controlul curentului in timp real la motor si ai sa vezi unde ajungi ...
Poate m-am exprimat gresit. Eu arunc tot si pastrez doar Synscan. Un fel de EQMod pe invers :) Am cate un Arduino pentru fiecare motor cu care generez pasii si cate un driver pentru stepper, care stie 16 microstep, si evident putere mai mare. Driverului ii spui directia, cati micropasi vrei, si impulsul de step. El face singur balansul de curent.
Daca stau sa ma gandesc bine pot folosi setupul asta sa motorizez orice montura, cu orice reductie, dar sa am controller Synscan.

Vezi ca mai sunt si ceva comenzi ascunse la MC, Skywatcher nu a dat public protocolul complet.
Or fi dar nu stiu daca ma mai intereseaza in momentul asta. Eu am interceptat conversatia intre Synscan si MC-ul original si am reimplementat toate comenzile. Nu am programat comenzile de PEC sau pacare telescop pentru ca nu le folosesc acum.
