BaroneRosso.it - Forum Modellismo

BaroneRosso.it - Forum Modellismo (https://www.baronerosso.it/forum/)
-   Circuiti Elettronici (https://www.baronerosso.it/forum/circuiti-elettronici/)
-   -   PIC16F84 & motore stepper 200 giri (https://www.baronerosso.it/forum/circuiti-elettronici/57334-pic16f84-motore-stepper-200-giri.html)

DDV1982 08 giugno 07 15:53

PIC16F84 & motore stepper 200 giri
 
1 Allegato/i
Salve a tutti, sono nuovo del forum.....
Sto lavorando ad un progettino semplice semplice con un motore stepper. Ora però il mio lavoro si è un po arenato, perchè ho dei problemi con la realizzazione del circuito...ne ho fatto uno su una millefori, ma perso di aver commesso dei grossolani errori in fase di progettazione. Un pò sono dovuti all' inesperienza, ma un pò anche alla scarsa disponibilità di materiale in cui sono in possesso...

In pratica io devo collegare lo stepper di 200 passi/giro (stepper unipolare) all' uscita delle porte IO del pic....
Ho creato questo chema, ma non credo che i componenti utilizzati vadano bene...come res di uscita ho messo 4 x 10 k e come transistor ho urilizzato dei TIP31C che avavo usato tempo fa per fare un ponte H per pilotare un motorino in CC .....Inoltre dovrei utilizzare altri 4 diodi per il ricircolo della corrente, ma non so quale tipo di diodo scegliere...1N4007 ??? non credo, perchè se ho ben capito , i diodi che vanno attaccati all'induttanza devono essere dei diodi molto veloci, ....
Lo schema pensato (e purtroppo già montato) è questo.....
Se lo provo con i motori stepper a 12 V BRUCIO I TRANSISTOR ?????

Attendo risposte, distinti saluti, DDV

protomax 08 giugno 07 17:28

Citazione:

Originalmente inviato da DDV1982
Salve a tutti, sono nuovo del forum.....
Sto lavorando ad un progettino semplice semplice con un motore stepper. Ora però il mio lavoro si è un po arenato, perchè ho dei problemi con la realizzazione del circuito...ne ho fatto uno su una millefori, ma perso di aver commesso dei grossolani errori in fase di progettazione. Un pò sono dovuti all' inesperienza, ma un pò anche alla scarsa disponibilità di materiale in cui sono in possesso...

In pratica io devo collegare lo stepper di 200 passi/giro (stepper unipolare) all' uscita delle porte IO del pic....
Ho creato questo chema, ma non credo che i componenti utilizzati vadano bene...come res di uscita ho messo 4 x 10 k e come transistor ho urilizzato dei TIP31C che avavo usato tempo fa per fare un ponte H per pilotare un motorino in CC .....Inoltre dovrei utilizzare altri 4 diodi per il ricircolo della corrente, ma non so quale tipo di diodo scegliere...1N4007 ??? non credo, perchè se ho ben capito , i diodi che vanno attaccati all'induttanza devono essere dei diodi molto veloci, ....
Lo schema pensato (e purtroppo già montato) è questo.....
Se lo provo con i motori stepper a 12 V BRUCIO I TRANSISTOR ?????

Attendo risposte, distinti saluti, DDV

Se non hai altro per le mani usa gli 1N4007 te la cavi con poco e hanno buona reperibilita' :wink:

Per i TIP31C sappi che hanno un guadagno molto basso da 10-25 max 50 nei migliori dei casi quindi la corrente che puoi amplificare sara' limitata al massimo tra 100 e 250mA supponendo di pilotare con 10mA di base ...

Io ti consiglio di utilizzare un driver tipo L298 ti semplifica di molto la vita e puoi dare a questo driver direttamente i segnali del PIC.

Fai conto pero' che il pilotaggio dei motori PP deve essere fatto per lo piu' in corrente tramite retroazione :wink: guardati il datasheet di L297 / L298 puo' esserti d'aiuto

DDV1982 08 giugno 07 21:20

Ok, ma visto che non ho tempo per riscrivere il firmware:icon_rofl per il pic e non ho il materiale (L298 e quell'altro che non mi ricordo il nome) per rifare il driver per lo stepper, posso utilizzare il circuito che ho costruiti ????Secondo voi è forse meglio se cambio la resistense sulle basi dei transistor:blink: (10k) con delle resistenze da 1k ????? Per avere una maggior corrente sul collettore...... Penso proprio di si....:wacko:
Cosa mi consigliate di fare ???

Distinti saluti, DDV

Rumble 09 giugno 07 00:00

Citazione:

Originalmente inviato da DDV1982
Ok, ma visto che non ho tempo per riscrivere il firmware:icon_rofl per il pic e non ho il materiale (L298 e quell'altro che non mi ricordo il nome) per rifare il driver per lo stepper, posso utilizzare il circuito che ho costruiti ????Secondo voi è forse meglio se cambio la resistense sulle basi dei transistor:blink: (10k) con delle resistenze da 1k ????? Per avere una maggior corrente sul collettore...... Penso proprio di si....:wacko:
Cosa mi consigliate di fare ???

Distinti saluti, DDV

come finali uso lmd18245 , ottimi, ho fatto un controller a 64 micropassi per un telescopio, se vai sul sito del costruttore e guardi alla voce sample ce anche il modo di scroccare qualche componente:fiu:
ciao

protomax 09 giugno 07 16:32

Citazione:

Originalmente inviato da DDV1982
Ok, ma visto che non ho tempo per riscrivere il firmware:icon_rofl per il pic e non ho il materiale (L298 e quell'altro che non mi ricordo il nome) per rifare il driver per lo stepper, posso utilizzare il circuito che ho costruiti ????Secondo voi è forse meglio se cambio la resistense sulle basi dei transistor:blink: (10k) con delle resistenze da 1k ????? Per avere una maggior corrente sul collettore...... Penso proprio di si....:wacko:
Cosa mi consigliate di fare ???

Distinti saluti, DDV

allora non ho idea se sai come dimensionare le resistenze in quella configurazione ba guarda che con quei transistor ci vai poco se a monte non hai la possibilita' di fornirgli corrente.

Il pic penso che piu' di 5/10 mA non possa darti e con que HFE fasso ci fai poco :

Ic = HFE * Ib
(in modo statico con Ib che come tidicevo non e' piu' di 5/10mA guarda le catteristiche dei pic in modo USCITA ALTA)

Otterrai al massimo 10mA * 50 = 500mA ma proprio nella migliori delle ipotesi.

In ogni caso sappi che la Ib si calcola cosi':

Ib = (Vpinpic - Vbesat ) / Rb se ti ricavi Rb puoi ottenere la Ib ;-)))

Vpinpic = 5V se aliemnti il pic a 5V ed e' il livello alto dell'uscita ;-)))

Mentre Vbesat = e' la tensione di saturazione della giunzione di base circa 0.7V

DDV1982 12 giugno 07 15:07

Ok, il problema del circuito l'ho risolto inserendo dei darlington...

Ora il problema è il firmware....il motorino non gira come pensavo...va avanti poi si si blocca poi ritorna indietro, poi ripearte per un tot di passi....e così via....

il firm scritto è elementare (in C) . Ho fatto delle simulazioni e sembra andare...in realtà non è così....
void main(){
unsigned char dato;
unsigned int i;
INTCON = 0;
TRISB=0x00;
dato=0x01;
/*
PORTB=dato;
DelayMs(60);*/
for(;;){
PORTB=0x01;
DelayMs(5);
PORTB=0x02;
DelayMs(5);
PORTB=0x04;
DelayMs(5);
PORTB=0x08;
DelayMs(5);
/*
dato=dato<<1;
PORTB=dato;
DelayMs(60);
if(dato==0x08) {
dato=0x01;
DelayMs(60);
**
*/
**
**//fine main

Secondo me il problema è che il motorino non si muove con i passi
0001
0010
0100
1000
0001, ovvereo si muove così ma non mettendo le fasi del motore in configurazione A/B/C/D....secondo me dovrei trovare l'ordine esatto delle fasi, ma non so come fare .....ho trovato quali sono le 4 fasi (bianco-rosso, rosso, verde, biancoverde) ma non so in che ordine metterli per fare girare il motorino in un verso con il codice
0001
0010
0100
1000 (wavemode)

Attendo risposte, ciao a tutti

protomax 12 giugno 07 15:37

Citazione:

Originalmente inviato da DDV1982
Ok, il problema del circuito l'ho risolto inserendo dei darlington...

Ora il problema è il firmware....il motorino non gira come pensavo...va avanti poi si si blocca poi ritorna indietro, poi ripearte per un tot di passi....e così via....

il firm scritto è elementare (in C) . Ho fatto delle simulazioni e sembra andare...in realtà non è così....
void main(){
unsigned char dato;
unsigned int i;
INTCON = 0;
TRISB=0x00;
dato=0x01;
/*
PORTB=dato;
DelayMs(60);*/
for(;;){
PORTB=0x01;
DelayMs(5);
PORTB=0x02;
DelayMs(5);
PORTB=0x04;
DelayMs(5);
PORTB=0x08;
DelayMs(5);
/*
dato=dato<<1;
PORTB=dato;
DelayMs(60);
if(dato==0x08) {
dato=0x01;
DelayMs(60);
**
*/
**
**//fine main

Secondo me il problema è che il motorino non si muove con i passi
0001
0010
0100
1000
0001, ovvereo si muove così ma non mettendo le fasi del motore in configurazione A/B/C/D....secondo me dovrei trovare l'ordine esatto delle fasi, ma non so come fare .....ho trovato quali sono le 4 fasi (bianco-rosso, rosso, verde, biancoverde) ma non so in che ordine metterli per fare girare il motorino in un verso con il codice
0001
0010
0100
1000 (wavemode)

Attendo risposte, ciao a tutti

Mi pare che non funzioni proprio cosi' il motore unipolare :S

Oltretutto hai provato a vedere se la corrente e' sufficiente e come hai dimensionato le resistenze con i darlingthon ?

DDV1982 12 giugno 07 16:10

Il darlington è un db677, e le resistenze di base sono tutte da 1,8 k.......

Io ho trovato in rete questo....

Wawemode - One phase drive http://hobbytron.altervista.org/circuiti/stp1.htm
e pensavo che andasse bene il wawemode....è come preare un baffer di 4 bit e basta schiftare(>> o <<) un dit per cambiare verso di rotazione....ma mi sa che sto sbagliando qualcosa... voi cosa ne dite ????

Per adesso vorrei far ruotare in senso orario il motore stepper... poi in futuro farò altre cose, ma per adesso mi basterebbe capire dove sto sbagliando....

qualcuno può darmi una mano ?

rivp6 12 giugno 07 18:47

1 Allegato/i
auguri!

DDV1982 12 giugno 07 21:41

Ti ringrazio, ma purtroppo non mi è stato di grosso aiuto....non ci ho capito molto...anche perchè non capisco dove siano certe finzioni, come ad esempio mInitMotor() ;:huh:
non c'è nessuna inizializzazione..o almeno io non l'ho notata...

Qualche altro suggerimento ?:wacko:


Tutti gli orari sono GMT +2. Adesso sono le 05:23.

Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002