Appunti da e per chi si vuole auto-costruire un posizionatore

:p

Riporto in vita questo vecchissimo thread perchè mi sembra inutile aprire uno nuovo ;), da ieri è ufficialmente cominciato il seguente lavoro:
Riciclare il mobile di un decoder Humax DTT4000 guasto fuori garanzia nel mobile per il posizionatore definitivo :D:D:D:D
Seguono le foto delle prime prove... :lol:

DSC03002.jpg

DSC02992.jpg

DSC02999.jpg

DSC02995.jpg


C'è spazio abbastanza per implementare quel che si vuole (un'altra scheda 10x16) :D.
 
:p

Piccolo aggiornamento di oggi :D

La basetta frontale originale con l'orologio lascia il posto a una nuova basetta con un più bel display a punti ma compatibile agli attacchi dell'originale :D:D. Manca soltanto il ricevitore IR del telecomando, devo trovarne uno adatto ;).
DSC03011.jpg

DSC03005.jpg
 
:p

Ora abbiamo anche i morsetti di uscita e i relativi fusibili, ho preparato anche la piccola parte a tensione di rete con l'interruttore e il connettore prelevato dall'alimentatore del decoder :D

DSC03013.jpg

DSC03015.jpg

DSC03018.jpg
 
:p

Ho completato la costruzione del controller e ora sono passato allo sviluppo del programma di gestione :D. Intanto ho approntato i primi blocchi operativi, ad esempio la gestione dell'accensione/spegnimento dal pannello frontale e la procedura di cancellazione della memoria EEPROM posizioni, che si ottiene dando tensione al trasformatore tenendo premuto il tasto di accensione ;). Ora si passa a un abbozzo della gestione motori :D...

P.S. ho trovato un modo economicissimo (nessun componente esterno) per implementare la funzione antirimbalzo sui pulsanti via software :D:D:D:D
 
:p

Stadio MOOOOLTO indietro, ma qualche fotina delle prime simulazioni ve la posto ;)

Banco di prova
DSC03035.jpg


Fornendo tensione al circuito si avvia come alcuni decoder...
DSC03037.jpg


E poi va in standby (LED rosso), tenendo tutto spento e mettendo effettivamente il micro in SLEEP ;)
DSC03040.jpg


Prime prove di visualizzazione da acceso, simulate accendendo solo la retroilluminazione ;)
DSC03043.jpg


Ho già implementato completamente (è abbastanza semplice ;)) la procedura per cancellare la memoria EEPROM delle posizioni, se necessario ;). Basta fornire tensione tenendo premuto il tasto di accensione e si presenta la maschera di conferma
DSC03045.jpg


Confermando con il quarto pulsante parte la cancellazione della memoria interna e si accende il LED rosso di destra (che userò per segnalare gli impulsi motore :D), poi chiede nuovamente conferma per proseguire nel bootstrap ;)
DSC03046.jpg


Per il telecomando devo trovare il modo di generare una portante a 38 kHz da modulare con il segnale seriale, finora niente fortuna nel trovare quarzi da 38 kHz... solo 40 :crybaby2:
Intanto potrei iniziare lo sviluppo del cuore di tutto il programma, la routine di gestione e movimento dei motori, ho predisposto il circuito in modo da poter utilizzare il contatore interno a 16 bit semiautomatico (TMR1), ma adesso pensandoci bene... data l'altissima velocità di esecuzione (già a 4 MHz era veloce :lol:) potrei utilizzare un registro a incremento-decremento manuale e così facendo si aprirebbe la possibilità di sviluppare un'unica routine completamente parametrica: prima di lanciarla fornisco asse da muovere, direzione e numero di passi da fare, poi si arrangia :D. Verrà fuori una GIUNGLA di salti condizionali :lol: ma ho il programmino per preparare i diagrammi di flusso apposta... :D!
 
Ultima modifica:
:p

Perchè il ricevitore IR è uno di quelli con integrato oltre al fotodiodo anche il filtro passa-banda e il demodulatore per fornire in uscita un segnale a onda quadra demodulato e compatibile TTL così posso entrare direttamente nella USART del PIC. Di solito però la banda di questi chip è molto stretta nel senso che demodulano segnali con portante a 38±1 kHz quindi se gli entro con un segnale modulato a 40 kHz rischio di non ritrovarmi nulla in uscita... :icon_rolleyes:, farò qualche prova con il quarzo da modem (307.2 kHz) che divisi per 8 mi danno 38.4 kHz ;).
 
:p

Rieccomi a voi con i lavori :D:D:D:D

Stasera prima prova del circuito con cablaggi temporanei (devo modificare il sistema dei limiti per poter utilizzare tutto e aggiungere il connettore dei segnali dietro ;), per il momento le 4 abilitazioni al movimento sono costituite da semplici fili collegati ai +5V ;))
DSC03199.jpg


Ho anche piazzato l'inverter per il display...
DSC03201.jpg


E infine finalmente sono riuscito a muovere i motori di provenienza sarda :D:D:D.
DSC03202.jpg


Sembra che il pistone EL sia decisamente poco ingrassato :eusa_think: mentre la trasmissione del motore H-H viaggia che è un piacere :D:D:D (forse risuona un po' troppo con le piastre montate ma poi sarà in terrazza :lol::D)...
 
:p

Nuova versione 2.0 del cablaggio ormai completato :D
DSC03211.jpg

DSC03213.jpg


Nel progetto di questo coso :D ho inserito una marea di sicurezze :lol:
Il (obbligatorio) fusibile 5x20L4A sulla 230V, naturalmente non a portata di dita :lol:
DSC03215.jpg


Fusibili 6.3x32L3.15A per i motori
DSC03216.jpg


Fusibili 5x20L200mA per la linea 5-12V che salirà su in terrazza (per il momento di sopra avrò solo utilizzatori a 5V ma ho predisposto anche la 12 sul DB9 ;))
DSC03218.jpg


Nell'alloggiamento di una delle 2 Scart ho installato il connettore DB9 per tutti i segnali di servizio
DSC03220.jpg


Ho dovuto levare il fumè perchè non si vedeva una mazza :crybaby2:
DSC03222.jpg


L'ultima sicurezza è una "non-sicurezza", trattandosi di una radicale modifica al sistema dei limiti meccanici. In pratica svincolo il motore dai microswitch e lo collego direttamente allo stadio di potenza, riportando il segnale dei microswitch (alimentati ora a 5V) alla scheda pilota che è stata dotata di 4 abilitazioni al movimento in hardware (1EA 1EB 2EA 2EB), tramite un semplice 4081, affidabile e non soggetto a bug software :lol:. Ho in previsione di sostituire i microswitch originali (solo N.C.) con modelli in deviazione (N.O.-N.C.) per poterli collegare all'apposito circuitino antirimbalzo posto direttamente nel motore H-H o nelle vicinanze del pistone EL :D, che provvede a fornire l'abilitazione al controller. Il funzionamento è semplice: a limiti non raggiunti su entrambe le linee di abilitazione di un canale ho 5V, quando dal microprocessore arriva un comando di movimento lo stadio funziona come normale. Non appena interviene uno dei 2 limiti viene a mancare la tensione sulla linea relativa, quindi il motore non potrà più girare in quella direzione ma potrà solo tornare indietro (rimane attivo l'altro microswitch :D). Un vantaggio non indifferente di questo approccio è che anche ai limiti ho l'arresto istantaneo del motore, in quanto non apro più il suo circuito facendolo girare per inerzia, ma disabilito direttamente lo stadio di potenza mettendo i fili a massa e ottenendo la frenatura come negli altri casi :D. Anche il fatto che i microswitch sono alimentati a 5V e gestiscono solo l'irrisoria corrente necessaria a polarizzare una porta CMOS contribuisce a migliorare le prestazioni ;). Il difetto è il cablaggio maggiore richiesto (in tutto, 8 fili di piccola sezione contro i 5 del sistema "classico"). Come sicurezza il sistema equivale quello classico: in caso di mancata chiusura di un microswitch o rottura di un filo il movimento nella direzione interessata viene inibito e il posizionatore segnala errore :D. L'unica accortezza da seguire è in fase di installazione, dove occorre prestare attenzione a far corrispondere il filo del limite con il movimento in quella direzione... :lol:D:D:D.
 
Ultima modifica:
:p

Nuovo aggiornamento :D:D

A prima vista non sembra cambiato nulla...
DSC03228.jpg


Invece ho fatto una PICCOLA modifica :lol::happy3:
DSC03231.jpg

DSC03233.jpg


Collegamento diretto del motore al posizionatore, circuito antirimbalzo sui 2 microswitch dei limiti che ora funzionano a 5V. In assenza di collegamento dei segnali di controllo, lo stadio di potenza non è abilitato a funzionare. Massima sicurezza: in caso di rottura di un microswitch o distacco del filo dal morsetto viene inibito il movimento nella direzione interessata dal guasto :D. Se si rompe la discesa nel posizionatore abbiamo le resistenze di pulldown che tengono disabilitato lo stadio fino a prova contraria :D.
Ho notato anche un altro miglioramento oltre all'arresto istantaneo ai limiti e alla velocità leggermente aumentata: ora si è ridotto notevolmente anche il tempo morto dopo l'arrivo del limite. Sarebbe, per quanti giri di motore il microswitch del limite rimane premuto quando inizio a farlo girare nell'altro senso. Questo estende anche leggermente l'arco copribile (posso memorizzare posizioni più vicine ai limiti) :evil5:.

Alla prossima con la modifica equivalente sul motore EL :D
 
:p

Come promesso pronti con il Superjack :D:D

Credevo di no e invece sono riuscito a sistemare tutto quanto dentro il fondello del motore :D
DSC03241.jpg


Nell'H-H ho dovuto tenere i microswitch originali perchè non riuscivo a toglierli, qui ho montato 2 Suresold industriali in deviazione :happy3::happy3:
 
:p

Dopo le prime prove e la codifica colori dei fili coerente su tutti i collegamenti ho allestito il quadro elettrico dedicato da mettere di sopra... la V1.0 era una roba alquanto artigianale :lol: invece con questa V2.0 è venuto fuori uno schianto :lol::happy3:, ve lo farò vedere :D.
Intanto qualche accenno alla precisione ai limiti con il sistema di abilitazione: guardando dove si ferma il dischetto magnetico dell'H-H (ha una sbavatura di colla che si può usare come riferimento ;)) ho rilevato una precisione di arresto di +/- un impulso :D:D:D un bel passo avanti rispetto ai 10-12 impulsi di prima :D. Precisione simile anche sul pistoncino EL: +/- un impulso utilizzando un puntino nero fatto con il pennarello sul perno della ruota dentata :D.
P.S. la V1.0 del quadro remoto chissà come mi attenuava di 0.45V la tensione sulle schedine dei motori, collegati con 40 metri di cavo CAT5 Ethernet, mentre questa V2.0 mi mangia solo 0.2V :eusa_think:. E io che avevo smontato il radiatore per aggiungere un diodo in modo da portare la tensione a 5.6V per compensare le perdite... adesso mi ritrovo i segnali di servizio a 5.4V mentre il micro è alimentato a 5V... meno male che tra il microprocessore e ogni i segnale in arrivo dall'esterno ho interposto una coppia di porte trigger di Schmitt ;). Devo controllare sui datasheet quanto overvolt in ingresso digeriscono (i.e. le alimento a 5 e entro con 5.4 ;)).
 
:p

Non c'è più bisogno di elevare la tensione a 5.6 ;).

Ora stanotte :lol: mi sono dato allo sviluppo software per portarmi avanti, con annesso debug mooooolto lungo :lol:...
Ho almeno approntato le 2 procedure base del sistema :D: una accetta in ingresso come parametri la direzione e il numero di passi da fare (per quando memorizzerò le posizioni ;)), l'altra invece fa semplicemente girare il motore finchè tengo premuto il tasto relativo e al rilascio lo arresta in fase (al prossimo step) :D.
Ho però notato una particolarità di questi motori... :eusa_think: oscilloscopio alla mano, i segnali dei sensori reed e ottico non hanno un duty-cycle al 50%, questo fa sì che se voglio avere la massima precisione ho un rapporto 2/3-1/3 nella lunghezza degli step verso E o W, nel senso che verso E uno step è lungo il doppio di uno step in direzione W :eusa_think:. Volendo tenere il segnale in fase per avere step uguali dimezzo la precisione... :doubt:. Almeno a qualcosa serve un front-end impulsi ben carrozzato con un 4093 e un 4051 :D. Così il mio PIC può selezionare il segnale da un dato motore "al naturale" o a livelli invertiti ;).
Cominciamo a fare sul serio con questo coso :lol::happy3:
 
:p

Post numero 100 su questo argomento :D:D:D:D:happy3:

E numero 100 non a caso :D
Infatti posso dire che ho concluso la fase di sviluppo & debug :happy3: relativa ai 2 pezzi più importanti del programma, ossia la routine per muovere di X passi e quella per il movimento continuo ;). La grafica sarà spartana ma per ora utilizzo il set di caratteri standard dell'HD44780 ;).
Esplicitando ogni routine in 4 blocchi operativi (uno per direzione) non avrò ottimizzato chissà che l'occupazione di memoria, ma in compenso sono riuscito ad implementare tutti i controlli in continuo e senza impazzire di salti condizionali :D. Nello specifico, prima di dare tensione verifico che non sia già arrivato al limite verso cui lo dovrei muovere, in caso contrario accendo il motore e con un inframezzamento da pazzo :5eek: controllo di continuo in sequenza se è arrivato al limite, se gira (current sensing, finalmente funzionante con una modifichetta :D) e se arriva l'impulso, con un timeout di 200 ms. Se il motore non gira visualizzo l'errore assieme a "-(M)-", abbozzo del simbolo normalizzato per un motore ;), mentre se non ricevo più impulsi arresto e visualizzo un abbozzo di onda quadra :D. Questo sia in movimento a passi sia in continuo, nel continuo quando rilascio il pulsante l'arresto avviene all'impulso (step) successivo, naturalmente con tutti i controlli di cui sopra :D qui non si bada a spese (cit. :lol::happy3:).
La routine di movimento a passi è già predisposta per il vero utilizzo, quello di GO TO X quando memorizzerò le posizioni ;), utilizza il timer1 a 16 bit e incremento automatico, devo solo caricare il numero di passi e poi si arrangia a farli tutti :D. Avendo esplicitato in 4 blocchi operativi, è un giochetto anche includere il conteggio assoluto del valore: so sempre su quale motore e in quale direzione operare :D. Tenendo traccia del numero assoluto, mi risparmio l'impazzimento di un utilizzo condiviso del timer1: richiamando una memoria, devo solo calcolare segno e quantità di spostamento dalla posizione corrente, caricare la quantità di spostamento nel timer1 e in base al segno comandare nella giusta direzione :D. A spostamento avvenuto avrò il registro del valore assoluto aumentato o calato dello spostamento appena fatto ;).

Ora prima di procedere con le funzioni avanzate devo provare a costruire uno straccio di telecomando :D.
 
Indietro
Alto Basso