ROBOT con 3-4 PIC e sistemi di comunicazione

13 Anni 2 Mesi fa - 13 Anni 2 Mesi fa #1 da gcupini
Rasa Erba Multiprocessore con 3-4 PIC e sistemi di intercomunicazione

Sono ancora io, quello del Topic sui Trasduttori del Rasaerba, o se preferite quello del Topic sulla Comunicazione I2c. E ancora rompo !

Il problema nasce dal nuovo progetto di Rasa Erba che sto implementando, dopo averne realizzato uno funzionante ma con qualche esigenza (frequente) di manutenzione meccanico- elettrica.

Ecco lo schema pensato e in parte realizzato nel prototipo del nuovo progetto con 4 PIC.
Perché Tanti processori?

*Un PIC18F4550 diciamo Supervisore (o master con LCD) che deve comunicare con 2 PIC16F88 e con un PIC18F2550 (con linea seriale obbligatoria) che si interfaccia via Xbee con un telecomando portatile (anch'esso con LCD).

*Un PIC16F88 cura solo i sensori Ostacoli (sono 5) e i sensori contenimento (2 Bobine) la comunicazione con Master è diretta e avviene con Interrupt per ragioni di velocità. Ma è prevista anche una comunicazione Lenta (RS232, I2C, RS485?) per i Settaggi dei parametri do lavoro.

*Un PIC16F88 che cura una parte delle Conversioni AD (Vbatteria, Tmotori, Iricarica ecc.) a comunicazione lenta (RS232, I2C, RS485?) oltre ai settaggi, anche in questo caso la comunicazione non necessità di velocità.

*Infine il Telecomando Portatile PIC18F2550 con LCD e pulsanti per Riportare a Casa il Rasa Erba (fermare, riavviare e muovere) e Settare i Parametri di Lavoro che comunica obbligatoriamente con Il PIC18F4550 attraverso RS232 e Xbee.

Avevo già implementato il software di comunicazione con RS232 tra PIC18F4550 e i due PIC16F88 quando mi e nata l'idea del telecomando. La RS232 che <casualmente> funzionava per le comunicazioni su un unico Bus tra i tre PIC non era più corretta per collegare Xbee e il nuovo PIC.

Ecco spiegato Il mio Topic sulla comunicazione I2c (ho perso una quindicina e più di giorni) ma non sono riuscito a realizzare la comunicazione Master Slave tra i tre PIC.

Mauro Laurenti mi ha risposto proponendomi altri protocolli di comunicazione (RS485, CAN) non proprio Banali per me.

Qualcuno Ha Idee da suggerire ?

Sono quasi pentito di aver sollevato la discussione. Mi sovviene che un Rimedio potrebbe essere quello di Cambiare il PIC18F4550 prendendone uno con 2 moduli RS232 o No ?

Giovanni vi invia un Grazie per i suggerimenti e l'ascolto
Ultima Modifica 13 Anni 2 Mesi fa da gcupini.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • gcupini
  • Visitatori
  • Visitatori
13 Anni 2 Mesi fa - 13 Anni 2 Mesi fa #2 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: ROBOT con 3-4 PIC e sistemi di comunicazione
Ciao Giovanni,

convengo con te sul fatto che il protocollo CAN non sia semplicissimo, anche se facendo uso di una libreria ti si semplifica tutto. Nel sito puoi trovare del materiale:

Tutorial CAN
Libreria CAN per PIC18F4580

Ti consiglio di leggere il tutorial a prescindere dalla scelta che farai.

In ogni modo voglio mettere in evidenza il fatto che il taglia erba per sua natura, anche se può essere un passatempo è potenzialmente pericoloso. Un suo malfunzionamento può portare ferite non trascurabili.
Per tale ragione fare in modo che i vari PIC comunichino in maniera sicura almeno dal punto di vista elettrico (ovvero siano quanto più immuni possibili a interferenze) è un "must". Non devi scendere a compromessi. Anche l'implementazione del protocollo deve essere tale da prevedere e gestire situazioni di rischio.

Porto un esempio che potrebbe non applicarsi al tuo caso specifico:
Se un PIC si accorge che il robot è sollevato da terra, vuoi per un sasso, o perché sollevato da una persona deve bloccare la lama. Il messaggio di blocco deve arrivare a destinazione senza temere errori (o quanto meno limitarli).
Messaggi di questo tipo dovrebbero avere due canali di trasferimento al fine da garantire che almeno uno possa arrivare.

In ogni modo la morale è che se non vuoi usare il CAN (usato in ambiente automobilistico) usa l'interfaccia RS485 usata in ambiente industriale e Domotico.
Il suo utilizzo è facile, se sai usare l'UART per il protocollo RS232 sai automaticamente usare l'RS485, visto che pu; essere usato con una UART.
Come detto devi usare il transceiver MAX485 piuttosto che il MAX232.
La comunicazione è su linea differenziale, ma a te poco importa. Normalmente si ha una sola linea di comunicazione, per cui o trasmetti o ricevi.

Su internet trovi molte informazioni sull'interfaccia RS485, in particolare vedi pure il datasheet del MAX485.

Per quanto riguarda la comunicazione wireless, potresti usare un PIC con due UART, una dedicata al bus RS485 e una dedicata al modulo Xbee.
In alternativa puoi anche avere un PIC dedicato al modulo Xbee e tutto si trova poi sul bus RS485.
Le periferiche sono modulari e puoi aggiungerle e toglierle dal bus.
Con l'interfaccia RS485 si usa spesso la funzione a 9 bit della UART al fine di trasmettere un indirizzo per individuare il modulo a cui inviare il messaggio. Infatti ogni periferica deve essere in generale individuata da un indirizzo.

Per la sicurezza non scendere a compromessi.

Saluti,

Mauro
Ultima Modifica 13 Anni 2 Mesi fa da Mauro Laurenti.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
13 Anni 2 Mesi fa #3 da gcupini
Ciaoi Mauro
Ancora grazie per le indicazioni.
In particolare mi hai quasi convinto sull'uso del protocollo RS485.
Così sulla questione della Sicurezza avevo gia pensato, sia di proteggere i fianchi da eventuali distacchi della lama di taglio, ma anche di trovare un sistema che blocchi il Rasa Erba se, un Bambino o anche un adulto, cercano di prenderlo mentre si muove. Persavo a qualche sensore di prossimità che blocchi il moto quando qualcuno si avvicina a meno di 10 Cm da qualsiasi direzione, di fianco o dall'alto.
Ma non ho le idee chiare. Mettere molti sensori ad ultrasuoni sui lati e verso l'alto mi sembra costoso e sprecone!.
Che cosa fare ?
Uno o più sensori capacitivi di prossimità ? Non li conosco e non ne conosco costi ed afficacia.
Sensori a infrarossi ? Hanno un cono di intervento molto stretto se non sbaglio.

Ancora grazie

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • gcupini
  • Visitatori
  • Visitatori
13 Anni 2 Mesi fa #4 da Gianni
Io userei l'IR ma potrebbe portare a malfunzionamenti se a terra incontra qualcosa di molto scuro. Se decidi di utilizzare la terza ruota indipendente per verificare lo slittamento, potresti renderla ammortizzata e collegare un microswitch all'asse. E' un sistema che si usa anche su molti giocattoli o sulle stufe alogene. Quando il rasaerba appoggia a terra, la terza ruota viene spinta leggermente verso l'alto e l'asse di sostegno preme il microswitch, quando sollevi il rasaerba la ruota si abbassa e rilascia il microswitch. O ancora una semplice LDR... quando il rasaerba è abbassato c'è buio e quando lo alzi c'è luce. O ancora una combinazione di vari sistemi per aumentare la sicurezza, magari disposti sui 4 lati.
Il pic con 2 UART è una buona scelta. Io ho preso un paio di 18F45K22 proprio perchè ho bisogno di 2 UART per un progetto che ho nel cassetto da tempo

Sono tutti bravi ad essere "open" con il "source" degli altri.
Un amico è colui che ti dice sempre quando stai sbagliando. Il mio miglior amico è il parser.
SettoreZero

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Gianni
  • Avatar di Gianni
  • Elite Member
  • Elite Member
Di più
13 Anni 2 Mesi fa - 13 Anni 2 Mesi fa #5 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: ROBOT con 3-4 PIC e sistemi di comunicazione
Ciao,

l'idea della ruota che ti è stata suggerita è sicuramente valida, come anche il suggerimento di combinare più sistemi.

Usare un sensore capacitivo, con un oggetto in movimento e un ambiente rumoroso con motori, è non banale e potresti avere più falsi avvisi che non benefici.

Come per le distanze potresti fare il piccolo radar che ti ho suggerito, credo sia anche esteticamente bello vedere un sensore che gira, magari da 0 a 360 gradi e poi indietro da 360 a 0 gradi in maniera da evitare il problema dell'intrecciare i fili.

In aggiunta ai bus che avevo citato, ovvero il CAN (con transceiver MCP2551) e l'RS485 (abbinata ad un UART) c'e' anche il LIN che è praticamente una versione semplificata e più economica del CAN. Anche in questo caso si farebbe uso dell'UART, dunque non si avrebbe bisogno di PIC speciali. Il LIN viene sempre usato in ambito automobilistico ma solo per le periferiche catalogate a basso rischio. Ti ho parlato del LIN solo per completezza ma ti consiglio di procedere con l'RS485.

Saluti,

Mauro
Ultima Modifica 13 Anni 2 Mesi fa da Mauro Laurenti.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
Moderatori: Mauro Laurenti

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login