Go Down

Topic: Arduenoveotto - prova scheda con L298 incorporato.. (Read 3 times) previous topic - next topic

dab77

Sep 19, 2012, 09:34 am Last Edit: Sep 19, 2012, 07:23 pm by dab77 Reason: 1
Ciao a tutti! avendo un L298N mi sono detto.. perchè lasciarlo a marcire?
Con uno già ci avevo fatto un driver per motori, quello classico proposto in varie forme in rete, io avevo copiato quello della seeedstudio.
Allora vorrei provare, invece di fare una cosa modulare, a fare una scheda con l'Atmega328P, l'L298N, uscita per due motori DC, ma anche connettore per un motore stepper 4 poli, completo di eventuale collegamento per 2 potenziometri (in caso di controllo manuale dei 2DC), lettura encoder,  e lettura anche dei 2 pin di current sense. In più ovviamente porto fuori i pin che avanzano che non si sa mai...

Sto cominciando a fare una bozza di scheda, che, vista la quantità di collegamenti, sarà doppia faccia (la mia prima volta...), quindi comincia ad essere difficilotto...
Accetto molti consigli, ovviamente, e magari se sono già state fatte schede simili, gli darei volentieri una studiata.

allego lo schema fino ad ora, che conterrà sicuramente molti sbagli, quindi NON UTILIZZATELO COME RIFERIMENTO! (non si sa mai..)

Per adesso ho provato solo a portare i segnali dal 328 al 298 e viceversa, per fare una bozza di instradamento. Come controllo sto provando ad usare la tecnica del tristate-pin, usando un transistor npn come descritto qui..si risparmiano 2 pin..
Consigli? Idee?

Inoltre pensavo di usare i PWM 9 e 10, eliminando il prescale del timer 1 (sto provando in questi giorni, è una figata!!) ed utilizzando il modo Phase and Frequency correct-mode, migliore per pilotare motori. Con una risoluzione di 400 punti, se non ricordo male, ottengo 20kHz, fino ad un max di risoluzione di 4000 punti e 2kHz.

Comunque, la strada è lunga... aspetto volentieri le correzioni sullo schema, se qualcuno ha il piacere di dargli un'occhiata.
Grazie, Davide.

EDIT: Ho cancellato gli allegati in quanto errati come concetto, quindi assolutamente non distribuibili. Grazie Astro.

Michele Menniti

Ciao dab, che funzione hanno R9 e R10 in quella particolare configurazione? sembrerebbero delle pull-up per i pin del mega, ma se così fosse ci si aspetterebbe dei transistor PNP...
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

astrobeed

Sullo schema mancano tutti i pallini dei punti di giunzione delle net, molte net passano sovrapposte a dei pin col rischio di trovarsi giunzioni indesiderate.
Penso di averlo detto veramente più di 1000 volte, tra questo forum e tutti gli altri che frequento, che gli IC della serie L29x non si deve applicare il PWM sull'Enable, oltre a perdere fino il 50% dell'efficienza c'è un elevato rischio di innescare il famigerato "effetto petardo" con la distruzione del 298.


Michele Menniti

In effetti il disegno è terribile a vedersi, io direi intanto di vedere la parte circuitale, poi magari gliela do' io una mano a dab a sistemare il disegno  ;)
questa dell'effetto petardo è estremamente fantasiosa :smiley-yell:
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

dab77

Ciao M, si sono delle pullup per permettere ad ognuno dei due segnali di rimanere alti quando si imposta il pin come INPUT, in maniera da utilizzare il ponte H come un freno-motore. la conformazione del "tristate-switch" è questa: e l'ho presa da qui, come dicevo anche nel post precedente. R9 del mio circuito sarebbe in questa immagine R2. R10 è per l'altra coppia del secondo ponte H.
Messa in "standalone" e oscilloscopio alla mano il "tristate-switch" funziona, l'ho fatto commutare fino a 30kHz. in realtà non ho certezze di come si comporta con l'L298 attaccato e funzionante.
Per esempio, ciò che mi preoccupa è la funzione di freno-motore. Praticamente si setta il pin (nel disegno il pin 2 di jp1) come INPUT, quindi quella R da 10K fa da pull-up e mette a +5V Input1, la stessa cosa succede a Input2, quindi il ponte H fa frenare il motore.  così dice... vi risulta?    PERÒ... se il motore sta andando bello spedito, al frenare crea la sua bella corrente, e dove va a finire questa?

Michele Menniti

ok, chiaro, però sulla storia del petardo io non trascurerei il consiglio di Astro, io so che lui di motori ne muove quintali/die, quindi certamente sa quello che dice; d'altra parte, almeno nella pagina linkata, non si parla di L298, quindi non è in discussione il tri-state ma semplicemente il pilotaggio PWM dell'enable.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

dab77

Ciao Astro, grazie anche a te dell'intervento. Si il disegno dello schema l'ho fatto di fretta, e comunque non sono praticissimo..

Per il PWM sull'enable era una cosa che mi chiedevo in effetti... in giro si trovano pilotati in entrambi i modi, e li vendono anche circuiti con il PWM sul pin enable. (fidarsi cecamente...che sbaglio...)

Ok, allora assodato che quindi per pilotare 2 ponti H ci vogliono per forza 6 pin, di cui 4 PWM, il risparmio di due pin e l'utilizzo del tristate-switch se ne va a belle donzelle...
in compenso ho imparato una cosa in più..

Quindi, cancello subito l'allegato nel primo post e riprovo.
Una cosa: ma se non si riesce ad evitare nel disegno dello schema l'incrocio delle piste, che si fa si creano dei "collegamenti" nominali, tipo quelli di Vcc e GND?

Michele Menniti

#7
Sep 19, 2012, 07:27 pm Last Edit: Sep 19, 2012, 07:29 pm by Michele Menniti Reason: 1
l'incrocio delle piste non crea alcun problema, devi usare i tondini quando sono fisicamente collegate, credo che Astro si riferisca al fatto che hai fatto passare piste sopra i pin dei componenti, in quel caso il collegamento si stabilisce automaticamente, anche senza tondino.
Il metodo della denominazione delle piste (appunto tipo Vcc) funziona benissimo, io ne faccio largo uso; nel mio recente progetto del capacimetro TTL (uno schema che occupa 2 pagine A4 :smiley-mr-green:) mi sono risparmiato almeno una cinquantina di piste; se usi correttamente le label il disegno diventa più snello e facile da leggere; in ogni caso, salvo che non siano effettivamente vicinissimi, ogni punto GND dovrebbe avere il suo simboletto, e già ne togli di roba da lì ;)

EDIT: @ DAB il "grazie Astro" ora puoi darglielo col karma $)
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

astrobeed


Per il PWM sull'enable era una cosa che mi chiedevo in effetti... in giro si trovano pilotati in entrambi i modi, e li vendono anche circuiti con il PWM sul pin enable. (fidarsi cecamente...che sbaglio...)


Se hai cinque minuti da impiegare bene leggi qui.

Quote

Ok, allora assodato che quindi per pilotare 2 ponti H ci vogliono per forza 6 pin, di cui 4 PWM, il risparmio di due pin e l'utilizzo del tristate-switch se ne va a belle


Per il PWM ti conviene usare il modo LAP, basta che aggiungi un doppio inverter e ti bastano solo due pin PWM e non quattro, però devi tenere la frequenza come minimo a 10 kHz altrimenti funziona male per tutta una serie di motivi legati al fatto che i motori sono carichi induttivi.

Quote

Una cosa: ma se non si riesce ad evitare nel disegno dello schema l'incrocio delle piste, che si fa si creano dei "collegamenti" nominali, tipo quelli di Vcc e GND?


Le piste puoi incrociarle come ti pare, però devi evitare assolutamente di passare sopra i punti di contatto dei pin dei componenti, tutti i punti di giunzione, reali, tra net devono avere il pallino, che Eagle solitamente mette in automatico, se non viene messo lo devi aggiungere manualmente.
Se mancano i pallini rischi di trovarti con delle net scollegate sul pcb e, ovviamente, il loro mancato sbroglio.

p.s. il termine "effetto petardo" è nato diversi anni fa e non l'ho coniato io, diciamo che è stato uno che ha speso un sacco di Euro per i 298 e ne ha fatto una vera e propria strage sia perché utilizzava motori con dei condensatori interni, molto insidiosi, sia perché usava l'enable per il pwm.

cyclone

#9
Sep 19, 2012, 08:01 pm Last Edit: Sep 19, 2012, 08:16 pm by cyclone Reason: 1
@dab77
appoggio pienamente astrobeed per la storia del petardo.... per i segnali DIR e PWM  lo schema che ti consiglio è in allegato.
attenzione ai diodi, ti sconsiglio 1N4004 poichè non sono adatti per questa applicazione.... io utilizzerei qualcosa del tipo fast recovery time BYV27 o superiori.
gli invertitori a tran potrebbero funzionare anche se io li sostituerei con delle porte invertenti magari a trigger schmitt tipo CD40106... /CD4093
inoltre sulle uscite "sense" esce un putiferio .... filtra prima di immettere i segnali sull'adc.

PS: perchè non pensi pure alla gestione di 2 encoder..(magari attraverso l'impiego di chip qu-enc esterni) così da prevedere una controllo a loop chiuso con PID?

KIERUNEK = direzione
PWM = pwm :)

ciao

dab77


@dab77
appoggio pienamente astrobeed per la storia del petardo.... per i segnali DIR e PWM  lo schema che ti consiglio è in allegato.
attenzione ai diodi, ti sconsiglio 1N4004 poichè non sono adatti per questa applicazione.... io utilizzerei qualcosa del tipo fast recovery time BYV27 o superiori.
gli invertitori a tran potrebbero funzionare anche se io li sostituerei con delle porte invertenti magari a trigger schmitt tipo CD40106... /CD4093
inoltre sulle uscite "sense" esce un putiferio .... filtra prima di immettere i segnali sull'adc.

PS: perchè non pensi pure alla gestione di 2 encoder..(magari attraverso l'impiego di chip qu-enc esterni) così da prevedere una controllo a loop chiuso con PID?

KIERUNEK = direzione
PWM = pwm :)

ciao

Ciao, allora gli 1N4004 in realtà li ho usati solo come simboli, ho dimenticato di mettere il nome giusto. sorry..
Poi, sto facendo una prova con un'altra schedina che avevo pronta con l'L298N, e sto utilizzando come porta NOT un MC74HC14 che avevo.
Le due direzioni funzionano come spiegato da Astro. (grazie del link) in modalità LAP.
L'unica cosa, Astro, è che così non puoi usare la funzione "freno", giusto?
invece nel disegno che hai messo tu, Cyclone, non riesco a capire se si può.
Riguardo agli encoder, l'avevo scritto nel primo post, che era il punto dove volevo arrivare, ma per gradi.

dab77

#11
Sep 19, 2012, 09:51 pm Last Edit: Sep 19, 2012, 09:58 pm by dab77 Reason: 1
Allora, carta e matita alla mano, mi pare di capire che con quelle logiche (suggerite da cyclone)con dir HIGH ottengo In2 sempre LOW e In1 PWM.
con dir LOW il contrario. indi anche qui niente funzione "freno", che si ottiene con entrambi gli input alti.

EDIT:
In realtà il datasheet dell'L298 dice che la funzione "freno" avviene con EN alto e in1=in2, quindi sia alti che bassi...
a questo punto tornando al più semplice metodo LAP, si potrebbe ipotizzare una resistenza di pulldown su entrambi gli input, di modo che se si imposta il canale usato come PWM come un INPUT, l'L298 vede entrambi gli ingressi come LOW?

cyclone

nello schema che ho postato il freno non può essere implementato...... hai solo direzione e pwm,
ma ti assicuro che se implementi il controllore PID il freno non ti serve a nulla, anzi non lo devi neppure nominare :)

dab77

e come fai a tenere il motore in posizione (fermo) se hai un carico applicato? ovviamente escludendo per ora freni magnetici...

cyclone

#14
Sep 19, 2012, 11:00 pm Last Edit: Sep 19, 2012, 11:09 pm by cyclone Reason: 1
E' il controllo PID  (Proporzionale-Integrale-Derivativo) che agendo opportunamente sul PWM e sulla Direzione fornisce la giusta regolazione affinchè il motore rimanga bloccato, nel caso che la velocità sia impostata a zero, o mantenga la velocità costante al variare del carico applicato sull'asse.

il freno non si usa assolutamente in questi casi.... peggiorerebbe il tutto con catastrofi mai viste !

Go Up