Skapa ett billigt primitivt bus system.

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
stevans
Inlägg: 1
Blev medlem: 5 oktober 2014, 15:05:50

Skapa ett billigt primitivt bus system.

Inlägg av stevans »

Hej,

Jag har precis fått upp intresset tillräckligt mycket för att vilja dyka in i elektronikens värld, som första projekt vill jag bygga ett litet bus system. Tanken är att ha en Arduino UNO som master och flertalet små pic:ar som slavar. I mitt stilla sinne så tänkte jag tillämpa I2C bibloteket i Arduino:n.

Frågor:
Kan man använda sig av I2C bus över längre sträckor, säg 10 meter?
Vilken PIC ska jag använda mig av? Är helt okunnig vad gäller modellbeteckningar osv. Kraven på PIC:en är att den skall kunna ta emot datapaket från arduino:n, den skall vara programmerbar med minst en I/O utgång och den ska var så billig som möjligt.
Adresseringsmässigt tänkte jag att alla slavenheterna ska kunna adresseras med DIP-Swichar, så jag antar att PIC:en måste ha 8 ingångar.
qx5
Inlägg: 1678
Blev medlem: 14 augusti 2014, 04:23:04

Re: Skapa ett billigt primitivt bus system.

Inlägg av qx5 »

Ta en kik på "RS-485" och använd samma processorserie som Aurdinon själv använder dvs Atmels ATmega168 etc som slavprocessorer.

Vanlig UART kan också vara något att kika på. Glöm inte checksumma (CRC) på det hela dock.
Användarvisningsbild
Icecap
Inlägg: 26703
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Skapa ett billigt primitivt bus system.

Inlägg av Icecap »

I²C är gjort för att använda på kretskortet, inte för att dra runt utanför!

Vill du ha en bra bus till "extern" användning är RS485 riktig bra.

Samtidig är det en sak som många inte verkar tänka på: alla ledningar som går utanför kretskortet och som bär data ska ha någon drivning mellan anslutningen och µC. Många drar ut µC-pinnarna direkt, det fungerar - men bara fram till att det blir något knas, då är pinnarna döda och kanske hela µC'n.

Någon drivning/isolering mellan µC och omgivningen ska det alltså vara om man vill att enheten ska vara det minste stryktålig. Och nu kommer det nog många som skriver att de minsann har dragit ut pinnarna utan något mellan och det har minsann fungerat bra - och det kan vara sant men det som kan behövas för att ändra det läge är ett åsknedslag i närheten.

En RS485 drivkrets kostar inte mycket (ST485, 73-218-05 till 8,76), ger bra kommunikationsmöjlighet, kan ha många enheter på samma dataledningar (ett helt vanligt tvinnat par) och kan kommunicera över långt avstånd. 19200 baud över 1500 m är inte alls omöjligt.

Och att använda en specifik µC-serie är bara larv, med RS385 är kommunikationen seriell och detta fungerar på alla µC med UART. Det finns även USB-donglar med RS485 interface, inte billiga dock men de finns.

Men är man insnöat på en specifik µC-serie kan man såklart använda den om man vill - men man kan välja fritt.
Användarvisningsbild
hyperion
Inlägg: 1309
Blev medlem: 8 maj 2009, 21:19:20
Ort: Nynäshamn

Re: Skapa ett billigt primitivt bus system.

Inlägg av hyperion »

annars kan väl CANbus vara vettigt att titta på också?
Användarvisningsbild
Icecap
Inlägg: 26703
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Skapa ett billigt primitivt bus system.

Inlägg av Icecap »

Och CANbus är lika enkelt som RS485? Skulle inte tro det!

stevans:
Microchip har en "Parametric Search" på deras hemsida - men alla PIC med UART eller EUART fungerar med RS485. Och detta betyder i grovt alla mer moderna PIC. Välj gärna PIC18FxxKxx serien, billiga, bra med minne och snabba.

Jag använde en PIC18F25K22, rätt programmerat tuggar den iväg med 64MHz med intern oscillator så för att skapa ett fungerande system behövs själva kretsen, en 100nF keramisk kondensator för avkoppling samt ett 10k motstånd mellan VDD och -MCLR.

Se bara till att din programmeringsenhet klarar den µC, jag använder en PICkit3 och har därför även kopplat in en 6-pinnars stiftlist för anslutning till den.
victor_passe
Inlägg: 2436
Blev medlem: 28 januari 2007, 18:45:40
Ort: Kungsbacka

Re: Skapa ett billigt primitivt bus system.

Inlägg av victor_passe »

Helt rätt CAN är mycket enklare.
Du får allt gratis, ack, omskickning, crc, prioritet, arbetrering, data id, address osv.
Med rs485 får du krångla med allt sådant själv.
Användarvisningsbild
Icecap
Inlägg: 26703
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Skapa ett billigt primitivt bus system.

Inlägg av Icecap »

OK, krets som klarar allt detta?
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 47276
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Skapa ett billigt primitivt bus system.

Inlägg av TomasL »

Rätt många PICar har komplett CAN-stöd i hårdvaran, vilket fixar detta.
Användarvisningsbild
Icecap
Inlägg: 26703
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Skapa ett billigt primitivt bus system.

Inlägg av Icecap »

Men då då, då är det ju bara att spola ATmega-grejen helt och köra uteslutande med PIC.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 47276
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Skapa ett billigt primitivt bus system.

Inlägg av TomasL »

Jupp.
Användarvisningsbild
Icecap
Inlägg: 26703
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Skapa ett billigt primitivt bus system.

Inlägg av Icecap »

Kollade lite snabbt och PIC18FxxK80 har alla CAN-interface.

xx kan vara 25, 26, 46, 46, 65 eller 66.
thebolt
Inlägg: 248
Blev medlem: 10 februari 2008, 17:41:40
Ort: Taipei Taiwan

Re: Skapa ett billigt primitivt bus system.

Inlägg av thebolt »

Om man inte gillar PIC finns det CAN-stöd i en stor del av STM32 serien (ARM-kretsar), ett antal STM8 (8-bitars från ST), TI har i många av sina också, i Atmels parametriska sök hittar jag 27 kretsar, både 8 och 32-bitars, typ AT90CAN, AT32UC3xx, ATMegaXXM1 (där XX är 16, 32, 64) osv så i princip oavsett vilken leverantör man föredrar eller är van vid går det idag att hitta processorer med CAN-stöd.
Användarvisningsbild
MiaM
Inlägg: 13371
Blev medlem: 6 maj 2009, 22:19:19

Re: Skapa ett billigt primitivt bus system.

Inlägg av MiaM »

Icecap skrev:I²C är gjort för att använda på kretskortet, inte för att dra runt utanför!
Ja, eller inom samma apparat.

Det är/var rätt vanligt med I2C mellan kretskort i fysiskt större apparater, t.ex. kunde det sitta en mikrokontroller vid frontpanelen uppe till höger på en tjock-tv och en kabel ned till "moderkortet" nere i botten på TV'n, och I2C användes få för att t.ex. styra kanalväljare, styra bild/ljudinställningar, välja externa ingångar o.s.v...
Skriv svar