Torna indietro   BaroneRosso.it - Forum Modellismo > Elettronica > Circuiti Elettronici


Rispondi
 
Strumenti discussione Visualizzazione
Vecchio 16 aprile 12, 22:24   #51 (permalink)  Top
User
 
L'avatar di gawain
 
Data registr.: 18-04-2008
Residenza: milano
Messaggi: 405
Citazione:
Originalmente inviato da gawain Visualizza messaggio
io ho messo un diodo per ogni uscita dispari poi collegati tutti a una resitenza da 2.7 k
e con arduino leggevo sia fronti di salita che di di scesa del segnale somma cosi ottieni i canali pari per differenza...(ma non devi fare nessun calcolo)

mi autoquoto per spiegare con un disegnino quello che confusamente ho tentato di dire...
in aggiunta per leggere fronti alterni basta porre inPPM.h
#define EDGE_DETECTOR_TOGGLE 1 // 0=reading PPM stream 1=reading alternate channel sequence from rx

ovviamente questo per quelle rx che non hanno il canale ppm
Icone allegate
Qualcuno sperimenta con Arduino?-pseudoppm.jpg  
gawain non è collegato   Rispondi citando
Vecchio 17 aprile 12, 12:35   #52 (permalink)  Top
User
 
L'avatar di Tom_1971
 
Data registr.: 23-04-2008
Residenza: Firenze
Messaggi: 1.108
Citazione:
Originalmente inviato da romoloman Visualizza messaggio
Scusa ma secondo te fra un Arduino e una Turnigy9x che monta un ATMEGA64A o una gruvin 4.1 (scheda modificata della turnigy9x) che monta un ATMEGA2560 ci passa molta differenza ???
No no, è chiaro che hai ragione. Il mio era un ragionamento semplificato per capire di cosa stiamo parlando e quali sono le potenzialità. Come dicevo all'inizio del thread io ho preso Arduino per realizzare l'illuminazione del presepe (?!) e sto cercando pian piano di capire cosa altro ci si possa fare
Lo dico scherzando, ma è vero che chi non ha dimestichezza con il SW/FW a volte se si perde nelle discussioni tecniche non riesce a capire lo scopo ultimo di quello di cui si parla. Invece capire a cosa serve o può servire uno strumento è la pre-condizione per farne un uso creativo!
__________________
1) Honey Bee FP 2) Mini Titan (V1 e V2) 3) Paracopter 4) Ultra-Micro J-3 Cub 5) Blade msr 6) Ultra-Micro T-28 Trojan 7) Team Losi Mini T 8) Blade mcpx 9) Turnigy 1/16 Nitro Buggy 10) Basher Nictro Circus 1/10 SCT
Tom_1971 non è collegato   Rispondi citando
Vecchio 17 aprile 12, 12:38   #53 (permalink)  Top
User
 
L'avatar di Tom_1971
 
Data registr.: 23-04-2008
Residenza: Firenze
Messaggi: 1.108
Ma veramente con uno di questi aggeggi ci si riesce a fare un altimetro con risoluzione centimetriche o perlomeno decimetrica? Ma quanta sarà mai la variazione di pressione su una quota così piccola... oddio ci vuole pochissimo a fare il conto ma non ho voglia. Ho sempre odiato la termodinamica e tutti gli annessi e connessi... e alle 12:30 sono già troppo stanco dalla giornata
__________________
1) Honey Bee FP 2) Mini Titan (V1 e V2) 3) Paracopter 4) Ultra-Micro J-3 Cub 5) Blade msr 6) Ultra-Micro T-28 Trojan 7) Team Losi Mini T 8) Blade mcpx 9) Turnigy 1/16 Nitro Buggy 10) Basher Nictro Circus 1/10 SCT
Tom_1971 non è collegato   Rispondi citando
Vecchio 17 aprile 12, 14:07   #54 (permalink)  Top
User
 
L'avatar di gawain
 
Data registr.: 18-04-2008
Residenza: milano
Messaggi: 405
Citazione:
Originalmente inviato da Tom_1971 Visualizza messaggio
Ma veramente con uno di questi aggeggi ci si riesce a fare un altimetro con risoluzione centimetriche o perlomeno decimetrica? Ma quanta sarà mai la variazione di pressione su una quota così piccola... oddio ci vuole pochissimo a fare il conto ma non ho voglia. Ho sempre odiato la termodinamica e tutti gli annessi e connessi... e alle 12:30 sono già troppo stanco dalla giornata
è un sensore differenziale...serve per fare il pitot
ovvero misurare la differenza tra pressione d'arresto e pressione statica che alle velocita di un f3k richiede la risoluzione di 0.1 Pa se vuoi usarlo come controllo di assetto rispetto all'aria (angolo di attacco AoA)
per l'altimetro bisogna prendere un assoluto
gawain non è collegato   Rispondi citando
Vecchio 17 aprile 12, 19:24   #55 (permalink)  Top
User
 
L'avatar di Tom_1971
 
Data registr.: 23-04-2008
Residenza: Firenze
Messaggi: 1.108
Capito. Infatti ho visto che sullo stesso sito ce n'è un altro come altimetro...
Il limite è solo la fantasia (oddio, anche il tempo e il... portafoglio!)

Sent from my Xoom using Tapatalk 2
__________________
1) Honey Bee FP 2) Mini Titan (V1 e V2) 3) Paracopter 4) Ultra-Micro J-3 Cub 5) Blade msr 6) Ultra-Micro T-28 Trojan 7) Team Losi Mini T 8) Blade mcpx 9) Turnigy 1/16 Nitro Buggy 10) Basher Nictro Circus 1/10 SCT
Tom_1971 non è collegato   Rispondi citando
Vecchio 17 aprile 12, 23:16   #56 (permalink)  Top
User
 
L'avatar di faustog_2
 
Data registr.: 19-07-2008
Residenza: catania
Messaggi: 978
ok

Ok ho capito!

quindi in pratica è come eseguire :

BTFSC REGISTRO,BIT
SE NON è ZERO
SE E' ZERO

qui invece sinttatticamente significa spostati di ICF1 posizioni a partire da quella a zero, (estrema destra) e piazza un 1 (uno) , quindi se facendo l'AND ovvero

per esempio ICF1 = 2 allora sposta un 1 (uno) in posizione 2 a sinistra, poi esegui una AND e valuta il risultato

0110.0101
0000.0100 Vero


oppure

0110.0001
0000.0100 Falso

Altra osservazione, partendo dalla tua osservazione in merito agli interrupt, mi sembra strano che però con il convertitore ADC non ci siano questi brutti effetti!
In sistanza facendo la prova non mi dà nessuna imperfezione.

leggi qui:
Arduino - Knob


Servo myservo;

int potpin = 0; // analog pin used to connect the potentiometer
int val; // variable to read the value from the analog pin

void setup()
{
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}

void loop()
{
val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023)
val = map(val, 0, 1023, 0, 179); // scale it to use it with the servo (value between 0 and 180)
myservo.write(val); // sets the servo position according to the scaled value
delay(15); // waits for the servo to get there
}









Citazione:
Originalmente inviato da romoloman Visualizza messaggio
ICF1 è una costante numerica che rappresenta il valore posizionale del BIT ICF1,
1<<ICF1 esegue un left shift di 1 di ICF1 posizioni, a quel punto viene fatto un & con il registro del timer e se il risultato è vero (!=0) viene eseguito il codice.

PS: Consiglio, lascia perdere l'assembler con gli AVR usa il C e un buon compilatore (AVR-GCC 4.7.0) il codice risultante è meglio di quello che puoi fare tu....

Ultima modifica di faustog_2 : 17 aprile 12 alle ore 23:21
faustog_2 non è collegato   Rispondi citando
Vecchio 17 aprile 12, 23:48   #57 (permalink)  Top
User
 
L'avatar di faustog_2
 
Data registr.: 19-07-2008
Residenza: catania
Messaggi: 978
alternativa

un alternativa potrebbe essere quello che facevo con i Pic

in questo caso dovrei usare la funzione digitalRead
____ _____
_____| |__________________| |_______


while (digitalReadA==Down)
[

]

while(digitalRead==HIGH)
[
conta milli secondi
]

adesso vado a nanna sto iniziando a delirare!
faustog_2 non è collegato   Rispondi citando
Vecchio 18 aprile 12, 00:13   #58 (permalink)  Top
User
 
L'avatar di gawain
 
Data registr.: 18-04-2008
Residenza: milano
Messaggi: 405
Citazione:
Originalmente inviato da faustog_2 Visualizza messaggio
Ok ho capito!

quindi in pratica è come eseguire :

BTFSC REGISTRO,BIT
SE NON è ZERO
SE E' ZERO

qui invece sinttatticamente significa spostati di ICF1 posizioni a partire da quella a zero, (estrema destra) e piazza un 1 (uno) , quindi se facendo l'AND ovvero

per esempio ICF1 = 2 allora sposta un 1 (uno) in posizione 2 a sinistra, poi esegui una AND e valuta il risultato

0110.0101
0000.0100 Vero


oppure

0110.0001
0000.0100 Falso

Altra osservazione, partendo dalla tua osservazione in merito agli interrupt, mi sembra strano che però con il convertitore ADC non ci siano questi brutti effetti!
In sistanza facendo la prova non mi dà nessuna imperfezione.

leggi qui:
Arduino - Knob


Servo myservo;

int potpin = 0; // analog pin used to connect the potentiometer
int val; // variable to read the value from the analog pin

void setup()
{
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}

void loop()
{
val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023)
val = map(val, 0, 1023, 0, 179); // scale it to use it with the servo (value between 0 and 180)
myservo.write(val); // sets the servo position according to the scaled value
delay(15); // waits for the servo to get there
}

la libreria servo forza periodicamente l'azzeramento del contatore che ti impedisce ti utilizzarlo senza glitch nella lettura del ppm...
i metodi usati in ppm.h non non modificano mai il valore del contatore, solo cosi riesci a ottenere piu funzioni indipendenti come lettura ppm e driver servi.
inoltre il driver dei servi basato su una una lookup table e sul xor tra due byte garantisce una omogeneita di timing tra canali assoluta e le uniche operazioni diverse avvengono durante il segnale di sincro quindi senza effetto.
gawain non è collegato   Rispondi citando
Vecchio 18 aprile 12, 00:22   #59 (permalink)  Top
User
 
L'avatar di gawain
 
Data registr.: 18-04-2008
Residenza: milano
Messaggi: 405
Citazione:
Originalmente inviato da faustog_2 Visualizza messaggio
un alternativa potrebbe essere quello che facevo con i Pic

in questo caso dovrei usare la funzione digitalRead
____ _____
_____| |__________________| |_______


while (digitalReadA==Down)
[

]

while(digitalRead==HIGH)
[
conta milli secondi
]

adesso vado a nanna sto iniziando a delirare!

una sccansione di questo tipo ti da un errore che è dipendente dal tempo di scansione...
la lettura di ICR1 ti permette di leggere con un scansione che puo essere il 99% dellintervallo piu corto ovvero molto lenta senza inficiare la precisione..
la lettura di quel registro necessita un tempo costante che quindi nelle letture differenziali non genera errore
gawain non è collegato   Rispondi citando
Vecchio 18 aprile 12, 07:47   #60 (permalink)  Top
User
 
L'avatar di faustog_2
 
Data registr.: 19-07-2008
Residenza: catania
Messaggi: 978
ok

credo di aver capito.... ....dammi un feedback

quindi il controllo
if (TIFR1 & (1<<ICF1))
serve per capire se il timer è arrivato a fondo scala ?

PPM.h lascia scorrere il timer 1 .. e si regola facendo differenze matetmatiche.. lo zero diventa il punto di partenza.. X, poi da esso si sviluppa il treno di PPM..

quindi non lo azzera.. anche perchè appena arriva in fondo a 65.000 scala e ricomincia da zero..

..ho realizzato tempo fa un sistema su Pic che fa lo stesso lavoro, un gruppo di registri li utilizzo , uno per ogni canale, gestito con FSR, il tmr0 quando scadeva in modo naturale, 16 mS , ricominciava.. finchè non scadevano i 16 mS leggevo la seriale & il sensore infrarosso.. appena scaduti i 16 mS allora eseguiva il treno di impulsi secondo quello che trovava nel buffer.. precedentemente riempito durante l'attesa.. quindi non c'erano tempi morti..

In pratica la libreria Servo è una cosa relativamente affidabile! però è strano perchè nei sorgenti di ARDUPILOT si fa uso della libreria Servo.. magari loro raggirano il problema ..chi sa in che modo.. devo studiare tanto.. ancora sono un principiante!



Citazione:
Originalmente inviato da gawain Visualizza messaggio
la libreria servo forza periodicamente l'azzeramento del contatore che ti impedisce ti utilizzarlo senza glitch nella lettura del ppm...
i metodi usati in ppm.h non non modificano mai il valore del contatore, solo cosi riesci a ottenere piu funzioni indipendenti come lettura ppm e driver servi.
inoltre il driver dei servi basato su una una lookup table e sul xor tra due byte garantisce una omogeneita di timing tra canali assoluta e le uniche operazioni diverse avvengono durante il segnale di sincro quindi senza effetto.

Ultima modifica di faustog_2 : 18 aprile 12 alle ore 07:52
faustog_2 non è collegato   Rispondi citando
Rispondi

Bookmarks




Regole di scrittura
Non puoi creare nuove discussioni
Non puoi rispondere alle discussioni
Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code è Attivato
Le faccine sono Attivato
Il codice [IMG] è Attivato
Il codice HTML è Disattivato
Trackbacks è Disattivato
Pingbacks è Disattivato
Refbacks è Disattivato


Discussioni simili
Discussione Autore discussione Forum Commenti Ultimo Commento
Coassiale mixed controller con arduino catman Circuiti Elettronici 12 01 aprile 11 23:17
quadricottero con arduino 2009 sailormann26 Aeromodellismo Progettazione e Costruzione 0 27 dicembre 10 23:12



Tutti gli orari sono GMT +2. Adesso sono le 21:28.


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