Home › FORUM › Stel je eigen schakeling voor › Eigen bus-systeem

FORUM

Log in om antwoord te posten of de notificatie-service te gebruiken.

Onderwerp: Eigen bus-systeem

Author Post

Sn00zerman

184 berichten

Stamgast
Stamgast

Read post 22-03-2011 15:05

Enige tijd geleden, nog voor de laatste uitgaves van elektor,
was ik zelf al begonnen aan een bus-systeem te ontwerpen.

Ik beschik over een modelspoorkamer, waar ik alles wens te automatiseren. Zo wil ik TL's dimmen, spots dimmen, audio/video apparatuur aan/uit zetten en kanalen omschakelen, m'n bedieningspaneel laten in en uitschuiven enz ... enz ...
Aangezien ik ook de intentie heb om de rest van het huis te automatiseren, ben ik maar eens beginnen denken over een bus-systeem.
Tijdens de bouw van onze woning, heb ik op allerlei plaatsen netwerkkabels voorzien, ik wil m'n bus-systeem dus over deze netwerk-kabels laten lopen. (LET WEL, ik gebruik netwerkkabels, geen echt netwerk !)

Het geheel wordt aangestuurd met een FriendlyARM, maar eender welke "sturing" die seriëel data kan versturen of ontvangen, kan overweg met dit bus-systeem.
(en het protocol is héél simpel, en heeft genoeg aan RX & TX, geen RTS en DSR enzo)

Als eerste heb ik een "hoofd-module", die verzorgt de communicatie tussen de FriendlyARM mini2440 en 3 bussen.
Rechts bovenaan de aansluiting naar de FriendlyARM toe,
links zit de 5V voedings-ingang.
Onderaan 3 bus-aansluitingen in de vorm van RJ45 connectors. Naast deze connectors zit telkens een 5V uitgang, om de volgende PCB te voeden.
Op elke bus kunnen 256 kaarten aangesloten worden, wat het totaal op 768 printen brengt, per seriële aansluiting.

Het seriële protocol is héél simpel:
- eerste byte = bus-nummer
- tweede byte = adres
- derde byte = aantal bytes dat volgen
(niet elke pcb heeft hetzelfde aantal bytes nodig namelijk)
- reeks data-bytes.

De hoofdmodule verdeelt de data naar de juiste bus.
Elke PCB op die bus, kijkt of het adres overeenkomt met z'n dip-switches, en doet al dan niet iets med de data.
Vervolgens stuurt hij deze data-stream door naar de volgende print. Er mogen dus gerust op één bus, kaarten met hetzelfde adres zitten, ze reageren dan allemaal op hetzelfde commando.

Hoofdmodule:




Vervolgens een relais-kaart, met 8 relais.
Alle kaarten hebben dezelfde opzet:
Links de data-in connector en 5V in-connector,
en rechts de data-out connector en 5V out-connector.
boven de microcontroller 8 dipswitches om het adres in te stellen.





Hierna een input-kaart, met 8 inputs.
Op een input kan je een schakelaar aansluiten om aan/uit te lezen, of je kan er ook 5V logica op aansluiten, afkomstig van andere electronica.





Vervolgens een DAC kaart, met 4 uitgangen.
elke uitgang is regelbaar tussen 0 & 10V, met een 8-bits resolutie. (Hiermee kan je bevoorbeeld VESA ballasten voor TL's dimmen enzo, alsook halogeen dimmers enzo)





Ik heb hier thuis ook nog diverse RGB LED strips in gebruik.
Daarom heb ik ook nog een RGB LEDstrip controller gebouwd. Deze kan elke kleur met 8-bits PWM aansturen.
(16,7 miljoen kleuren mogelijk dus)
Die 3 microcontrollers op de print is misschien wel wat overkill, maar ik zit hier met een enorme overstock aan PIC's
(TLC5940 had meer aangewezen geweest, lol)
elke kleur kan 8A hebben, dus een 10-tal meters van die LED strip sturen is dus geen probleem.





P.S. al mijn printen zijn met de elektor profiler gefreesd

Staat nog op de planning:
- 20 x 4 chars LCD aansturing
- OSD modules (met MAX7456)
- Touch screen

Verder heb ik al diverse sensors enzo ontwikkeld om op m'n bus-printen aan te sluiten, zoals laser lichtsluisjes enzo.

groeten,
Kris

Bericht bewerkt door Sn00zerman op 22-03-2011 15:54

Bericht bewerkt door Sn00zerman op 22-03-2011 15:58

Bericht bewerkt door Sn00zerman op 22-03-2011 16:02

Bericht bewerkt door Sn00zerman op 22-03-2011 16:05

Bericht bewerkt door Sn00zerman op 22-03-2011 16:08

Arjen H.

1158 berichten

Expert¹
Expert¹

Read post 22-03-2011 16:20

Ik zou een hele lap tekst kunnen typen, maar ik kan het ook samenvatten in 2 woorden: ERG MOOI !


ps. Die netwerkconnectoren zitten zo te zien op kleine printjes met een pinheader er op. Heb je die ergens (goedkoop) in bulk op de kop kunnen tikken?

Bericht bewerkt door Arjen H. op 22-03-2011 16:23

Sn00zerman

184 berichten

Stamgast
Stamgast

Read post 22-03-2011 16:50

Hoi Arjen,


Die connectors zitten idd op een breakout bordje.
Ik heb die anderhalf jaar voor 0,6 euro per stuk gekocht.
Dat was destijds goedkoper dan gewone RJ45 connectors.
(ik heb er toen 100 gekocht)

Ondertussen zie je diezelfde connectors op Ebay te koop voor 1,80 euro per stuk.

Sn00zerman

184 berichten

Stamgast
Stamgast

Read post 21-04-2011 20:16

Enige tijd geleden heb ik hier m'n eigen bussysteem voorgesteld.
Ondertussen heb ik niet stil gezeten, en heb ik enkele uitbreidingsborden gebouwd ...

Als eerste, een controller die 4 servo's kan aansturen, met een 8-bit resolutie per servo. (aangezien deze servo's 180° kunnen bewegen, is de nauwkeurigheid dus ongeveer 0,7°)
Als basis heb ik mijn RGB controller gebruikt, met wat kleine aanpassingen.





M'n relais controller had ik hier al voorgesteld, maar ik heb nu een kleine aanpassing gedaan, zodat die ook bruikbaar is voor 230V te schakelen. (koper weggefreesd tussen de relais dus)





Hier en daar wil ik ook wat simpele info tonen, daarom een module ontwikkeld met een 4 x 20 chars LCD op. (achtergrondverlichting is ook schakelbaar via het bus systeem)





Normaliter hangen de kaarten van m'n bussysteem allemaal aan mekaar via een netwerkkabel. Op bepaalde plaatsen kan ik die kabel moeilijk plaatsen/verbergen, daarom heb ik ook nog draadloze modules ontwikkeld.

één standaard print, die zowel opgebouwd kan worden als "bedraad naar wireless" alsook "wireless naar bedraad". Verder kan ik die print ook als "repeater" gebruiken. Ik gebruik RFM12BS modules op 868 Mhz, om de data draadloos door te sturen. Een transceiver krijgt een eigen adres, dat moet matchen met de volgende transceiver, (max. 6-bit adressering, 64 draadloze systeempjes zijn dus mogelijk)





Verder ben ik momenteel nog bezig met een "high power" module, om met TIP122's, hele reeksen éénkleurige LED-strips te schakelen.

Wordt dus binnenkort nogmaals vervolgd


groeten,
Kris

Arjen H.

1158 berichten

Expert¹
Expert¹

Read post 22-04-2011 15:32

Wederom mijn complimenten. Mooi project.

Eén van de twee netwerk connectoren heb je op z'n kop gezet, waarschijnlijk vanwege de makkelijkere routing. Had je ze niet liever gewoon rechtop staan? Desnoods met een paar draadbruggen er bij?

tymenyel

197 berichten

Stamgast
Stamgast

Read post 24-04-2011 15:02

Ik vraag me af wat je doet als meerdere module's aandacht willen.(temperatuur is te laag, je drukt op een knopje, trein is gedetecteerd op bepaalde positie, het is te donker, enz.) Werkt dat via polling? Als je er een module aanhangt is dat plug en play, of moet je dat in het hoofdprogramma er bij zetten? Weet de microcontroller wat voor kaart het is wat er aan adres 14 hangt en of er een adres 14 is?

Complimenten voor je mooie kaartjes handig modulair dus je kan zo een kaartje vervangen, en je hebt ook een handig doorlus-systeem. Goed werk!

Groeten, Martijn

Sn00zerman

184 berichten

Stamgast
Stamgast

Read post 26-04-2011 19:01

Hoi Martijn,


Deze kaarten, hangen via één hoofdkaart, aan een "slim apparaat" met een seriële poort. (in mijn geval een FriendlyARM mini2440)

Op zo één hoofdkaart, zijn 3 bussen voorzien.

Je moet dus zelf wel software voorzien op het "slim apparaat" om de kaarten aan te sturen.

Als bevoorbeeld op bus 1, adres 2, een RGB module zit, waar je rood op halve waarde, en groen en blauw op volle waarde wil aansturen,
stuur je naar de seriële poort van de hoofdmodule "B1" voor bus 1, "A2" voor adres 2, en vervolgens "3" (om aan te geven dat er nog 3 bytes volgen) vervolgens "128","255","255"
(de 3 bytes dus, voor de RGB)
Door na de bus-nr en het adres-nr, eerst op te geven hoeveel bytes er nog volgen, ben ik niet gelimiteerd in m'n type kaarten.
Voor de LCD bevoorbeeld, het kan zijn dat die aan één byte genoeg heeft. (controlebyte, om scherm leeg te maken en/of achtergrondverlichting aan/uit te doen), maar evengoed kan die LCD ook nog bytes binnenkrijgen voor de X- en Y-positie, alsook een X-aantal bytes als tekst zelf. (LCD krijgt dus minimum 1 byte voor de kiezen, en max. 83 (controlebyte/x-byte/y-byte/80 chars)
Een DAC krijgt 4 bytes (omdat er 4 uitgangen op zitten).
Ik wil maar aantonen dat ik niet beperkt ben met m'n bytes, en variabele frame lengtes heb dus.

Uiteindelijk als het signaal helemaal rond is, wordt het teruggestuurd naar het "slimme apparaat", om aan te geven dat het signaal succesvol rond is gegaan.

Een kaart waarop je bevoorbeeld drukknopjes aansluit (of andere zaken), zorgen automatisch dat het adres en de 8-bit waarde bij de hoofdmodule aankomt.

De hoofdmodule weet vanop welke bus dit komt, en stuurt in het standaardformaat de data terug naar het slimme apparaat, als die kaart adres 4 heeft, en op bus 2 zou zitten, krijg je op het slimme apparaat, "B2" , "A4" , en daarna een "1" (er volgt nog 1 byte) en dan een byte met de 8-bits in.

Gaat het om een kaart met meerdere ADC, dan is er een byte per ADC voorzien.

Zo hoeft de hoofdmodule "niks" te weten, en de kaarten op zich ook niet, ze nemen altijd het complete variabele frame binnen, en sturen het door. (ook als het voor hun bestemd is, gaan ze het hele frame toch nog doorsturen, zodoende kan je meerdere kaarten met hetzelfde adres op je bus hebben, ze reageren dan allemaal identiek)


groeten,
Kris

Log in om antwoord te posten of de notificatie-service te gebruiken.

Payoff

Gratis Elektor@POST

Elektor wekelijks lezen:

Met Elektor@POST steeds het laatste nieuws uit de elektronicawereld.

Direct aanmelden >>>

Volg ons ook op:

      

Elektor Events

Speciale producten

Direct doen

Nu in prijs verlaagd

Elektor OSPV1

Tijdelijk € 210,- korting!

Dit zelfbalancerende indoor voertuig is ideaal voor bijvoorbeeld fabriekshal, magazijn of school.