Go Down

Topic: [Multicotteri] Elettronica : IMU, MCU, Sensori ed algoritmi di controllo (Read 132 times) previous topic - next topic

lesto

uff questo non era spiegato sulle cose che ho letto.. mannaggia  :smiley-mr-green:
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

samu_87



Considera che il PPM "classico" lavora sui 50Hz, quindi cambiare più spesso la velocità non serve a nulla


Ma ti devo cazziare subito oppure preferisci che ti faccio recapitare un invito premio per il quizzettone ?  :D
Regola prima, il ciclo pid DEVE essere almeno 10 volte più veloce della costante di tempo del sistema, meglio se 20 volte.
Regola seconda, lo slicing del pid non solo deve essere molto preciso, non deve essere affetto da jitter, la millis,e pure la micros, buttale in quel posto e tira la catena che non ci fa nulla.


Allora mi merito un voto positivo!!! :)

Dunque il tutto non funzionava perchè grazie all'interrupt chiamavo la funzione pid che a sua volta usando la comunicazione I2C legge i sensori dal gyro ma lo fa tramite interrupt e quindi essendo chiamato da un interrupt andava in stallo poiché gli interrupt sono bloccanti. Quindi é corretto acquisire i dati dal gyro nel loop???

Ora di interrupt ne dovrei avere abbastanza, 4 per i canali radio, uno per il pid e uno per la libreria servo.h!!

Voi come acquisite i segnali dalla radio?!
Conoscete un qualcosa di già pronto per programmare il timer nome nel link che ho postato prima ma tipo les timer3 che nn va in conflitto con servo.h????

Grazie!!

lesto

io per leggere la radio uso un codice modificato dal bironpilot che usa gli interrupt sui pin e non sugli interrupt, quindi dovrebbe essere ok
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

samu_87


io per leggere la radio uso un codice modificato dal bironpilot che usa gli interrupt sui pin e non sugli interrupt, quindi dovrebbe essere ok

Esatto, tipo prendi l'interrupt 0 che é associato al pinX quando si alza ti salvi il micros del momento attuale, quando il segnale scende fai la differenza fra il micros vecchio e quello attuale e sai quanto é durato il segnale e questo ti da il PPM, giusto? Lo fai con attachInterrupt?

lesto

no, ci sono 3 interrupt che gestiscono tutti i pin a gruppi di 8. Quindi ricevi uno di questi 3 interrupt (io ne attivo solo uno rendendo usabili quindi solo 8 pin, più che sufficienti per una TX), fai uno xor del valore attuale dei pin con quello precedente e ottieni i pin che sono cambiati. A questo punto elabori il cambiamento
Io attualmente leggo 4 pin: 2 4 5 6

https://github.com/lestofante/arduinoSketch/blob/master/QuadricotteroCompleto/RX/InputPin.cpp
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Go Up