Raspberry - lettura encoder ssi + uscita pwm 3 fasi

Vorrei usare un Raspberry 4 per leggere un encoder standard ssi

formatting link

e produrre poi su tre diversi pin, dei segnali pwm che integrati andranno a costituire tre sinusoidi, sfasate di 120gradi tra loro In sostanza un giro completo dell'asse encoder dovra' realizzare sulle uscite tre segnali, sfasati di 120gradi tra loro, simil-sinusoide Qualche esperto di Raspberry ha gia' utilizzato le routine per realizzare queste due funzioni (lettura endocer ssi, uscita pwm) e saprebbe indicarmi qualche riferimento/esempio?

Reply to
RobertoA
Loading thread data ...

"RobertoA" ha scritto nel messaggio news:s0ameh$1g88$ snipped-for-privacy@gioia.aioe.org...

Vorrei usare un Raspberry 4 per leggere un encoder standard ssi

formatting link

andranno a

realizzare

indicarmi

per le uscite PWM io farei cosi':

#define IMPULSI_GIRO 8192 // 13 bit #define PWM_100 1024 // valore per PWM al 100%

long posizione = LetturaSSI(); double angolo = 2.0 * M_PI * posizione / IMPULSI_GIRO; int pwm1 = PWM_100 * sin( angolo ); int pwm2 = PWM_100 * sin( angolo + 2.0 * M_PI / 3.0 ) int pwm3 = PWM_100 * sin( angolo + 4.0 * M_PI / 3.0 )

Reply to
alfio

mentre la Lettura SSI potrebbe essere cosi' (in stile Arduino):

#define PIN_CLOCK 2 #define PIN_DATO 3

long LetturaSSI ( void ) { long posizione = 0; DigitalWrite( PIN_CLOCK,LOW ); DigitalWrite( PIN_CLOCK,HIGH ); for( int bit=0 ; bit

Reply to
alfio

Il 14/02/2021 11:28, alfio ha scritto:

Ringrazio molto per l'aiuto che mi stai dando Probabilmente per un esperto con questa scheda e' un gioco da ragazzi, ma io l'ho presa piu' per curiosita' e non c'ho ancora fatto niente Il codice che hai mostrato immagino sia da compilare e poi avviare Stai parlando di Raspbian o altro sistema operativo? Che compilatore per far girare quel codice?

Reply to
RobertoA

"RobertoA" ha scritto nel messaggio news:s0b7j8$mpi$ snipped-for-privacy@gioia.aioe.org...

ma

non sono un esperto di Raspberry, mai avuto uno per le mani, so solo programmare. il codice e' in linguaggio C. ho scritto simil Arduino in quanto le funzioni che ho usato per leggere gli ingressi e scrivere le uscite sono quelle che trovi in Arduino. per l'equivalente in Raspberry devi documentarti tu. era solo per dare un'idea di come lo avrei fatto io.

non conosco la potenza di calcolo del Raspberry, ma potrebbe essere insufficiente se il numero di giri a cui lavora l'encoder e' troppo elevato.

Reply to
alfio

Il 14/02/2021 18:54, alfio ha scritto:

Ok, grazie

Reply to
RobertoA

Il 14/02/21 18:54, alfio ha scritto:

Vedo che le trame vanno lette ad almeno 80kbit/s, quindi anche un Arduino in C con le (lente) funzioni delle librerie standard e interrupt disabilitati lo vedo ansimante anche per la sola lettura SSI... non parliamo di un Raspy che seppure abbia una potenza di calcolo infinitamente maggiore, fa pero` girare un intero sistema operativo Linux non real-time...

Reply to
Claudio_F

Il 14/02/2021 20:40, Claudio_F ha scritto:

Mi risulta che un Raspberry, con codice scritto in C, arrivi a diversi MHz di esecuzioni istruzioni (ad esempio il classico pin-toggle) Certo che se vai di script arrivi a qualche KHz

formatting link

Reply to
RobertoA

In teoria la Raspberry Pi 4 dispone sia di porte SPI (che probabilmente si possono adattare per collegarsi al bus SSI) sia di uscite PWM. Quindi se sono supportate dal kernel non devi fare nulla in bit-banging.

--
Fletto i muscoli e sono nel vuoto.
Reply to
dalai lamah

Si capisco Ma come fanno nel test ad ottenere l'onda quadra a decine di MHz col programma che inverte un unico pin, senza interruzioni?

Reply to
RobertoA

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.