Sida 1 av 1
Skapa ett billigt primitivt bus system.
Postat: 5 oktober 2014, 16:00:23
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.
Re: Skapa ett billigt primitivt bus system.
Postat: 5 oktober 2014, 16:21:21
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.
Re: Skapa ett billigt primitivt bus system.
Postat: 5 oktober 2014, 16:29:55
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.
Re: Skapa ett billigt primitivt bus system.
Postat: 5 oktober 2014, 17:08:30
av hyperion
annars kan väl CANbus vara vettigt att titta på också?
Re: Skapa ett billigt primitivt bus system.
Postat: 5 oktober 2014, 17:24:16
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.
Re: Skapa ett billigt primitivt bus system.
Postat: 5 oktober 2014, 18:58:27
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.
Re: Skapa ett billigt primitivt bus system.
Postat: 5 oktober 2014, 20:38:33
av Icecap
OK, krets som klarar allt detta?
Re: Skapa ett billigt primitivt bus system.
Postat: 5 oktober 2014, 20:41:21
av TomasL
Rätt många PICar har komplett CAN-stöd i hårdvaran, vilket fixar detta.
Re: Skapa ett billigt primitivt bus system.
Postat: 5 oktober 2014, 20:43:38
av Icecap
Men då då, då är det ju bara att spola ATmega-grejen helt och köra uteslutande med PIC.
Re: Skapa ett billigt primitivt bus system.
Postat: 5 oktober 2014, 20:47:00
av TomasL
Jupp.
Re: Skapa ett billigt primitivt bus system.
Postat: 5 oktober 2014, 20:51:55
av Icecap
Kollade lite snabbt och PIC18FxxK80 har alla CAN-interface.
xx kan vara 25, 26, 46, 46, 65 eller 66.
Re: Skapa ett billigt primitivt bus system.
Postat: 6 oktober 2014, 03:38:26
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.
Re: Skapa ett billigt primitivt bus system.
Postat: 6 oktober 2014, 18:32:52
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...