BaroneRosso.it - Forum Modellismo

BaroneRosso.it - Forum Modellismo (https://www.baronerosso.it/forum/)
-   Elimodellismo Principianti (https://www.baronerosso.it/forum/elimodellismo-principianti/)
-   -   Misuratore giri rotore on board (https://www.baronerosso.it/forum/elimodellismo-principianti/237499-misuratore-giri-rotore-board.html)

pfede 27 gennaio 12 19:24

Misuratore giri rotore on board
 
Ciao a tutti, durante i primi esperimenti con il mio clone storm 450, mi sono imbattuto nella necessità di misurare il numero di giri del rotore. Ho fatto un piccolo circuito da montare sull'eli per verificare il corretto numero di giri.
Ho descritto la realizzazione sul sito GRIX.it sotto la categoria PIC.

Riporto la descrizione di seguito.

Tachomet on board per Eli RC

Da neofita dell'elimodellismo, una volta acquistato un modello usato, e presomi lo scrupolo di verificare tutto come se fosse nuovo di scatola di montaggio, mi sono trovato a dover regolare la curva di passo e la curva di potenza in modo da rendere il regime di rotazione il più possibile costante lungo l'escursione dello stick che regola queste due grandezze.

Da quanto letto in rete il regime di rotazione dovrebbe essere di circa 2200 giri al minuto. La difficoltà che ho incontrato è stata quella di misurare il numero di giri di un rotore che può essere molto pericoloso durante la sua rotazione. Da qui l'idea di crare un Tachometro (null'altro che un misuratore di giri) da posizioanre direttamtnte sull'eli e che mi dasse delle indicazioni circa il numero di giri chiare e immediatamente comprensibili essendo concentrato a non far schiantare il modello durante i primi balzelli).

Descrizione

Il tacchimetro misura la rotazione dell'albero mediante sensore ottico a riflessione di quelli usati dai robot per seguire le linee sul pavimento (QRD1114). La gestione della lettura degli impulsi e della visualizzazione è demandata ad un pic 12f629.

Il principio di funzionamento è molto semplice. Impostate le tre sogli e che mi interessa visualizzare il sensore invia un impulso di interrupt al micro. Il micro in un intervallo di tempo prestabilito (1 secondo) conta quani impulsi vengono prodotti e poi visualizza il risultato mostrando le seguenti indicazioni: nessun led acceso se non viene raggiunta la soglia minima; led verde acceso se viene superata la soglia 1. led verde e rosso accesi se viene superata la seconda soglia. Led rosso acceso se vieno superata la terza soglia.

lo schema elettrico è evidentemente molto banale. Il sensore QRD1114 è collegato alla GPIO 2.I led alla GPIO 0 e alla GPIO 5.L'alimentazione della scheda vieni presa direttamente dalla radio essendoci uno spazio liberp (BAT).

Prima di collegare il circuito alla radio ricevente assicurarsi che il regolatore fornisca 5 e non 6 V (nel qual caso porre in serie all'alimentazione due diodi al silicio che abbasseranno la tensione di circa 1.2V)

http://www.grix.it/UserFiles/pfede/Image/Schema.jpg

Posizionamento sul modello e funzionamento

Per comodità di visualizzazione e facilità di posizionamento ho deciso di attaccare la piccola basetta millefori con dello scotch biadesivo sul fianco della fusoliera così che il sensore leggesse per riflessione il fermo dell'albero. Come punto di interruzzione della lettera durante la rivoluzione ho utilizzato il grano di serraggio che essendo nero non riflette i raggi IR.

http://www.grix.it/UserFiles/pfede/I...800x600%5D.JPG

Posizionamento sul fianco dell'eli.

http://www.grix.it/UserFiles/pfede/I...800x600%5D.JPG

HVista del notolino di bloccaggio dell'albero e grano di serraggio interrompi fascio.

http://www.grix.it/UserFiles/pfede/I...800x600%5D.JPG

Vista laterale dove si intravvede il sensore montato dal lato opposto.


Funzionamento:


Una volta data alimentazione ci sarà una prima fase in cui si accendereanno i led per qualche istante per indicare il programma si avviato.

Poi per verificare che il grano faccia il suo dovere ruotando a mano il rotore per cinque volte si accenderanno alternativa il led verde e quello rosso. Dopo di questa fase di verifiche il programma entra nella sual fase di misurazione e indicazione.

I più pignoli diranno che durante il delay di 1 secondo se il ciclo viene interrotto dall'interrupt alla fine questo tempo si allungherà. Questo è vero, ma per le indicazioni a cui serve questo oggetto questi errori non sono influenti.

Il nuero di giri che va impostato come soglia è bene che sia un multiplo di 60, visto che il micro poi lo divide per trovare i giri al secondo.


Programma del micro
Di seguito il programma fatto in Mikrobasic da compilare e metere nel pic correggendo a piacere i valori di soglia.

Il clock è quello interno.


Program RPM
'legge il numero di giri del rotore
'si possono impostare 3 soglie
'RPM min med e max
'se supera il min si accende il led verde
'se supera il med si accende anche il rosso
'se supera il max spegne il verde quindi resta acceso solo il rosso

Const RED as integer = 0 ' 0
Const GREEN as integer = 5 ' 0
Const RPM_in as integer = 2 ' I

Dim RPM_Min as byte
Dim RPM_Med as byte
Dim RPM_Max as byte
Dim i as byte

'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''

'sub procedure
sub procedure interrupt
'l'interrupt è stato causato dal fronte di salita sul pin RPM_in
'incrementa di 1 il contatore ad ogni passaggio

i = i + 1

INTCON.INTF = 0
INTCON.GIE = 1

end sub

'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''

main:

CMCON = %00000111
OPTION_REG = %11000100
TRISIO = %11011110

GPIO = 0

'impostazzione delle soglie

RPM_Min = 2100 'giri minuto 35
RPM_Med = 2160 'giri minuto 36
RPM_Max = 2220 'giri minuto 37

'fate attenzione che siano multipli di 60

RPM_Min = RPM_Min / 60
RPM_Med = RPM_Med / 60
RPM_Max = RPM_Max / 60

'inizializzazione

Delay_ms(2500)
GPIO.GREEN = 1
Delay_ms(1000)
GPIO.RED = 1
Delay_ms(1000)
GPIO.GREEN = 0
GPIO.RED = 0
Delay_ms(500)
GPIO.GREEN = 1
GPIO.RED = 1
Delay_ms(500)
GPIO.GREEN = 0
GPIO.RED = 0

'attiva l'interrupt sulla porta GPIO.2
INTCON = %10010000
'test dei primi 10 giri

i = 0
do
if i.0=0 then
GPIO.GREEN = 1
GPIO.RED = 0
else
GPIO.GREEN = 0
GPIO.RED = 1
end if

loop until i = 10

'fine inizializzazione

MainLoop:

'routine di 1 secondo in cui conta gli impulsi
i = 0
delay_ms(1000)
GPIO.GREEN = 0
GPIO.RED = 0

'visualizzazione dei risultati
If i > RPM_Min then 'accende il led verde se supera la soglia minima
GPIO.GREEN = 1
end if
if i > RPM_Med then 'accende il led rosso se supera la soglia media
GPIO.RED = 1
end if
if i > RPM_Max then 'spegne il led verde sè è olte la soglia max
GPIO.GREEN = 0
end if

goto MainLoop

end.


andre79 27 gennaio 12 19:50

Citazione:

Originalmente inviato da pfede (Messaggio 3002216)
Ciao a tutti, durante i primi esperimenti con il mio clone storm 450, mi sono imbattuto nella necessità di misurare il numero di giri del rotore. Ho fatto un piccolo circuito da montare sull'eli per verificare il corretto numero di giri.
Ho descritto la realizzazione sul sito GRIX.it sotto la categoria PIC.

Riporto la descrizione di seguito.

Tachomet on board per Eli RC

Da neofita dell'elimodellismo, una volta acquistato un modello usato, e presomi lo scrupolo di verificare tutto come se fosse nuovo di scatola di montaggio, mi sono trovato a dover regolare la curva di passo e la curva di potenza in modo da rendere il regime di rotazione il più possibile costante lungo l'escursione dello stick che regola queste due grandezze.

Da quanto letto in rete il regime di rotazione dovrebbe essere di circa 2200 giri al minuto. La difficoltà che ho incontrato è stata quella di misurare il numero di giri di un rotore che può essere molto pericoloso durante la sua rotazione. Da qui l'idea di crare un Tachometro (null'altro che un misuratore di giri) da posizioanre direttamtnte sull'eli e che mi dasse delle indicazioni circa il numero di giri chiare e immediatamente comprensibili essendo concentrato a non far schiantare il modello durante i primi balzelli).

Descrizione

Il tacchimetro misura la rotazione dell'albero mediante sensore ottico a riflessione di quelli usati dai robot per seguire le linee sul pavimento (QRD1114). La gestione della lettura degli impulsi e della visualizzazione è demandata ad un pic 12f629.

Il principio di funzionamento è molto semplice. Impostate le tre sogli e che mi interessa visualizzare il sensore invia un impulso di interrupt al micro. Il micro in un intervallo di tempo prestabilito (1 secondo) conta quani impulsi vengono prodotti e poi visualizza il risultato mostrando le seguenti indicazioni: nessun led acceso se non viene raggiunta la soglia minima; led verde acceso se viene superata la soglia 1. led verde e rosso accesi se viene superata la seconda soglia. Led rosso acceso se vieno superata la terza soglia.

lo schema elettrico è evidentemente molto banale. Il sensore QRD1114 è collegato alla GPIO 2.I led alla GPIO 0 e alla GPIO 5.L'alimentazione della scheda vieni presa direttamente dalla radio essendoci uno spazio liberp (BAT).

Prima di collegare il circuito alla radio ricevente assicurarsi che il regolatore fornisca 5 e non 6 V (nel qual caso porre in serie all'alimentazione due diodi al silicio che abbasseranno la tensione di circa 1.2V)

http://www.grix.it/UserFiles/pfede/Image/Schema.jpg

Posizionamento sul modello e funzionamento

Per comodità di visualizzazione e facilità di posizionamento ho deciso di attaccare la piccola basetta millefori con dello scotch biadesivo sul fianco della fusoliera così che il sensore leggesse per riflessione il fermo dell'albero. Come punto di interruzzione della lettera durante la rivoluzione ho utilizzato il grano di serraggio che essendo nero non riflette i raggi IR.

http://www.grix.it/UserFiles/pfede/I...800x600%5D.JPG

Posizionamento sul fianco dell'eli.

http://www.grix.it/UserFiles/pfede/I...800x600%5D.JPG

HVista del notolino di bloccaggio dell'albero e grano di serraggio interrompi fascio.

http://www.grix.it/UserFiles/pfede/I...800x600%5D.JPG

Vista laterale dove si intravvede il sensore montato dal lato opposto.


Funzionamento:


Una volta data alimentazione ci sarà una prima fase in cui si accendereanno i led per qualche istante per indicare il programma si avviato.

Poi per verificare che il grano faccia il suo dovere ruotando a mano il rotore per cinque volte si accenderanno alternativa il led verde e quello rosso. Dopo di questa fase di verifiche il programma entra nella sual fase di misurazione e indicazione.

I più pignoli diranno che durante il delay di 1 secondo se il ciclo viene interrotto dall'interrupt alla fine questo tempo si allungherà. Questo è vero, ma per le indicazioni a cui serve questo oggetto questi errori non sono influenti.

Il nuero di giri che va impostato come soglia è bene che sia un multiplo di 60, visto che il micro poi lo divide per trovare i giri al secondo.


Programma del micro
Di seguito il programma fatto in Mikrobasic da compilare e metere nel pic correggendo a piacere i valori di soglia.

Il clock è quello interno.


Program RPM
'legge il numero di giri del rotore
'si possono impostare 3 soglie
'RPM min med e max
'se supera il min si accende il led verde
'se supera il med si accende anche il rosso
'se supera il max spegne il verde quindi resta acceso solo il rosso

Const RED as integer = 0 ' 0
Const GREEN as integer = 5 ' 0
Const RPM_in as integer = 2 ' I

Dim RPM_Min as byte
Dim RPM_Med as byte
Dim RPM_Max as byte
Dim i as byte

'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''

'sub procedure
sub procedure interrupt
'l'interrupt è stato causato dal fronte di salita sul pin RPM_in
'incrementa di 1 il contatore ad ogni passaggio

i = i + 1

INTCON.INTF = 0
INTCON.GIE = 1

end sub

'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''

main:

CMCON = %00000111
OPTION_REG = %11000100
TRISIO = %11011110

GPIO = 0

'impostazzione delle soglie

RPM_Min = 2100 'giri minuto 35
RPM_Med = 2160 'giri minuto 36
RPM_Max = 2220 'giri minuto 37

'fate attenzione che siano multipli di 60

RPM_Min = RPM_Min / 60
RPM_Med = RPM_Med / 60
RPM_Max = RPM_Max / 60

'inizializzazione

Delay_ms(2500)
GPIO.GREEN = 1
Delay_ms(1000)
GPIO.RED = 1
Delay_ms(1000)
GPIO.GREEN = 0
GPIO.RED = 0
Delay_ms(500)
GPIO.GREEN = 1
GPIO.RED = 1
Delay_ms(500)
GPIO.GREEN = 0
GPIO.RED = 0

'attiva l'interrupt sulla porta GPIO.2
INTCON = %10010000
'test dei primi 10 giri

i = 0
do
if i.0=0 then
GPIO.GREEN = 1
GPIO.RED = 0
else
GPIO.GREEN = 0
GPIO.RED = 1
end if

loop until i = 10

'fine inizializzazione

MainLoop:

'routine di 1 secondo in cui conta gli impulsi
i = 0
delay_ms(1000)
GPIO.GREEN = 0
GPIO.RED = 0

'visualizzazione dei risultati
If i > RPM_Min then 'accende il led verde se supera la soglia minima
GPIO.GREEN = 1
end if
if i > RPM_Med then 'accende il led rosso se supera la soglia media
GPIO.RED = 1
end if
if i > RPM_Max then 'spegne il led verde sè è olte la soglia max
GPIO.GREEN = 0
end if

goto MainLoop

end.


Wow:blink: davvero bravo... mi piacerebbe montarlo sul blade ma le mie conoscenze da elettricista sono piuttosto carenti...:D:lol:
Ciao, André:)

markio1992 27 gennaio 12 20:27

Citazione:

Originalmente inviato da andre79 (Messaggio 3002276)
Wow:blink: davvero bravo... mi piacerebbe montarlo sul blade ma le mie conoscenze da elettricista sono piuttosto carenti...:D:lol:
Ciao, André:)

Bel lavoro davvero...fortuna che ti descrivi pure neofita! :P

pfede 27 gennaio 12 21:52

Neofita di elimodellismo, non di elettronica!

Approfitto per dire a chi volesse realizzarlo che sulla pagina di grix ho fatto una piccola precisazione sul programma.:wink:

pfede 27 gennaio 12 22:00

In realtà per gli errori che ho fatto potrei sembrare davvero un pivellino... ma la gola di svolazzare era maggiore di quella di sviluppare un programma perfetto...:fiu:

bladebuster 30 gennaio 12 12:34

Citazione:

Originalmente inviato da pfede (Messaggio 3002589)
In realtà per gli errori che ho fatto potrei sembrare davvero un pivellino... ma la gola di svolazzare era maggiore di quella di sviluppare un programma perfetto...:fiu:

grande!
questo è lo spirito giusto del modellista, sia farsi da sè quello che serve, sia non preoccuparsi di fare e mostrare i propri errori, ma condividere quello che si sa.


Tutti gli orari sono GMT +2. Adesso sono le 15:00.

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