iralabdisco / otto_stm32

Firmware for differential drive robot Otto.
GNU General Public License v3.0
3 stars 0 forks source link

adc #52

Open lrivara opened 4 days ago

lrivara commented 4 days ago

Non riesco a capire perchè le misure prese dalle adc sono completamente diverse. Una ha un range di 80-100 e l'altra di 40-50. Come mai? @fdila @sorrenti

fdila commented 3 days ago

Ci sono un po' troppe poche informazioni per darti una risposta :)

Cosa c'è collegato agli adc, i pin di current sense del pololu? Hai provato prima a togliere il pololu e a mettere in input degli adc una tensione nota (che so, tipo i 1.5V di una pila AAA) e vedere se il valore che leggi sull'adc è quello che ti aspetti?

lrivara commented 3 days ago

Cosa c'è collegato agli adc, i pin di current sense del pololu? si Hai provato prima a togliere il pololu e a mettere in input degli adc una tensione nota (che so, tipo i 1.5V di una pila AAA) e vedere se il valore che leggi sull'adc è quello che ti aspetti? no, ma come faccio ad inserire una batteria, con un filo di rame?

fdila commented 3 days ago

Sì con una pila da 1.5, collegando il - al GND della nucleo e il + al pin di adc dovresti leggere la tensione della pila, anche se sarebbe più carino avere un piccolo generatore di segnali, se ci sei domani ti porto il mio. In alternativa puoi prendere multimetro/oscilloscopio e guardare la tensione che esce dai pin CS pololu e vedere se corrisponde a quello che leggi dalla nucleo.

lrivara commented 3 days ago

domani ci sono per che ora devo farmi trovare?

fdila commented 3 days ago

Domani ci sono fino alle 10.30

lrivara commented 2 days ago

Sono riuscito a vedere il voltaggio dell'onda ma anche cambiando le impostazioni del generatore l' onda è sempre sopra ai 3,3v

17193934367117545906196318511638

lrivara commented 2 days ago

Ho misurato con l'oscilloscopio i pin current sense del pololu IMG_20240626_135328 Queste sono le misurazioni dei due pin quando i motori sono in funzione. Si vede anche dall'oscilloscopio che un pin va ad un voltaggio quasi il doppio dell'altro

fdila commented 1 day ago

Si vede anche dall'oscilloscopio che un pin va ad un voltaggio quasi il doppio dell'altro+

Se converti il delta tra i due in corrente assorbita dai motori quanto sarebbe? Magari è ragionevole che si sia qualche milliampere di differenza (ma su questo lascio la parola al prof).

Extra che mi è venuto in mente ora: non è che quegli "spike" di corrente corrispondono in qualche modo al segnale PWM? Se leggo bene la scala delle x sembra proprio che ci siano ogni 50us, che convertendo è proprio il 20khz a cui va il PWM. Prova ad attaccare anche i pin del PWM all'oscilloscopio e vediamo se effettivamente è così, tra l'altro era una cosa che se non ricordo male interessava anche a @sorrenti

lrivara commented 1 day ago

IMG_20240627_120502 Il canale giallo è il pwm e quello blu il current sense

lrivara commented 1 day ago

Se converti il delta tra i due in corrente assorbita dai motori quanto sarebbe? 18,4 mV- 11,2mV = 7,2 mV 7,2 mV / 20 mV/A = 0,36 A anche se la documentazione dice che 20 mV/A sono solo approssimati

fdila commented 1 day ago

anche se la documentazione dice che 20 mV/A sono solo approssimati

A questo punto mi preoccuperei poco di questa discrepanza tra i due canali visto che è un pochino prevista.

A seguito dell'immagine sopra direi che forse ci avevo preso sul pwm. IMHO ci sono due/tre questioni:

  1. Capire se quegli spike siano "normali" per come funzionano i motori DC, prova a googlare in attesa del prof. (purtroppo la mia conoscenza dei motori DC è scarsa)
  2. Scrivere un simpatico firmware (a parte rispetto a quello di otto) per loggare a frequenza abbastanza elevata (dirie i 40khz che ci siamo detti) i dati dei due adc sul computer. Vedi tu se si riesce a star dietro alla trasmissione sulla seriale visto che sono solo due numeri a 40khz, o se c'è abbastanza spazio sulla flash della schedina ti puoi anche far un buffer per loggare tot ms di adc e poi mandare tutto insieme alla fine. Ad occhio il segnale non è male ma potrebbe essere utile comunque filtrarlo. Per esperienza personale fare le prove su come scrivere e tunare il filtro è decisamente più facile se fatto da pc sui dati raccolti, piuttosto che sul microcontrollore.
  3. In parallelo approfondire/verificare l'utilizzo dell'adc con l'uso di un timer per campionare il segnale ad una frequenza stabilita ed integrare questa cosa su firmware otto.
lrivara commented 17 hours ago

Ho trovato un programma della ST che si chiama STM32CubeMonitor. Ho provato ad usarlo per vedere le variabili delle adc e questo è il risultato ( ho mandato i motori a metà della potenza massima )

image