zaterdag 23 maart 2013

I²C uitgebreide relaiskaart (Geupdate 27-03-2013)

In mijn I²C bus systeem wil ik uiteraard ook 220V apparaten schakelen.
Mijn lay-out van de print ziet er als volgt uit.:


Zoals sommige van jullie misschien opvallen , zit rechts op de print boven de aansluiting van de I²C een extra aansluiting om een externe 5V adapter erop aan te sluiten (met nummer 1 gemarkeerd).
Dit is gedaan voor als de I²C bus te weinig stroom zou leveren , dat ik deze dan apart kan voeden zodat de I²C lijn niet extra belast word.
Dit kan gewoon gedaan worden met een jumpertje.
Tevens kan ik op deze kaart ook gelijk zelf kiezen welk I²C adres ik wil hebben.
Dit is gedaan door 3 jumper mogelijkheden te maken hier (met nummer 2 gemarkeerd).:




De rechter jumper op de foto is wat ik eerder vermelde voor de extra 5V aansluiting (met nummer 1 gemarkeerd).

In deze print maak ik gebruik van een MCP23017 IC die ook weer speciaal is voor het I²Csysteem.

Uiteindelijk resultaat na het maken van de print.
Door hulp van Stynus (http://www.schematheek.net/) heb ik die print kunnen afmaken want ik kwam enkele relais te kort en kwam er zelf niet maar aan, maar Stynus kon me nog enkele bezorgen (hiervoor mijn dank.)


Diverse pogingen geprobeerd om de relaiskaart herkend te krijgen ben ik erachter gekomen dat ik de verkeerde Ic's erin heb zitten.
Ik meende dat ik een MCP23017 erin geplaatst had maar na controle bleek het een MCP23S17 te zijn waardoor ik hem op deze print niet krijg gevonden.

Het verschil tussen de MCP23017 en de MCP23S17 is de pin indeling.
Zie hieronder wat het verschil is.:



Rechts de MCP23S17 heeft pin 11-12-13 en 14 anders.
Dit is normaal geen probleem, maar op die pin posities heb ik mijn relaiskaart niet gemaakt.






Dus nu moet ik even wachten dat ik die IC binnen krijg, hij is wel al besteld, dus hopelijk morgen of overmorgen binnen.



Update.:
Vandaag (26-03-2013) de juiste IC binnen gekregen.
Met als resultaat dat de relaiskaart nu wel word herkent.
Omdat op internet nergens de adressen tabel van die IC te vinden is , heb ik even een klein moment erin gestoken om het adressen tabel hier van te maken.
Van de MCP23S17 word uitgezocht als ik hem ga gebruiken maar die van de MCP23017 heb ik bij een in een Excel bestand gezet..

 Nu nog een test code schrijven voor de relaiskaart om te kunnen testen en we kunnen weer verder.

Update 27-03-2013

Even begeven aan de relaiskaart script.
Ik heb nu een werkende test script geschreven die de relaiskaart aan stuurt.
Deze loopt alle poorten na , eerst maakt deze betreffende poort hoog en dan laag.

Het test script ziet er als volgt uit.:

#!/usr/bin/python
# Raspberryboard Mainunit V0.1
#
# Author : Pascal SChuffelers
# Site   : http://www.vbib.be
#
# Date   : 27/03/2013 tijd.: 20:07 uur.
# Relay kaart test script voor aansturing aansturing

import smbus
import sys
import getopt
import time 
bus = smbus.SMBus(1)

address = 0x20 # I2C adres gekozen op de MCP23017
bus.write_byte_data(0x20,0x00,0x00) # Stel alle banken A als uitgang 
bus.write_byte_data(0x20,0x01,0x00) # Stel alle banken B als uitgang 

def set_relay(data,bank):
  if bank == 1:
   bus.write_byte_data(address,0x12,data)
  else:
   bus.write_byte_data(address,0x13,data)
  return

# Handel de commando lijn argumenten
def main():
   a = 0
delay = 0.5   
while True:

# Beweeg relay naar links  
   for x in range(0,8):
     a = 1 << x
     set_relay(a,0)
     time.sleep(delay)
   set_relay(0,0)
   for x in range(0,8):
     a = 1 << x
     set_relay(a,1)
     time.sleep(delay)
   set_relay(0,1)  
 
# Beweeg relay naar rechts 
   for x in range(7,-1,-1):
     a = 1 << x
     set_relay(a,1)
     time.sleep(delay)
   set_relay(0,1)
 
   for x in range(7,-1,-1):
     a = 1 << x
     set_relay(a,0)
     time.sleep(delay)
   set_relay(0,0)
   
  
if __name__ == "__main__":
   main()

Werking van relaiskaart.


2 opmerkingen:

  1. sta versteld at je dit eventjes ontwerpt hoor
    Ik kwam op het forum van een topic over de k8055 en toen hier beland.
    Gister ook gezien dat sommige mensen de k8055 velleman kaart aan een raspberry hebben aangesloten, misschien is dit ook iets om in je systeem mee te nemen ?

    groet

    vincent

    BeantwoordenVerwijderen
    Reacties
    1. Inderdaad kun je die Velleman K8055 op de Raspberry aansluiten, alleen niet via de I²C die ik gebruik.
      En aangezien ik dit dus wel wilde en geen gebruik wilde maken van de huidige verkrijgbare prints is deze dus ontworpen ;)
      Het grote voordeel uiteraard om zelf die prints te maken is dat je zelf kunt kijken wat je nodig hebt aan aansluitingen en zelf ook kunt bepalen wat je erop wilt of als je een behuizing zou hebben moet je altijd gaan zoeken of je een print vind die erin past en op deze manier bepaal je dat helemaal zelf.

      Die K8055 heb ik momenteel al lopen , die mijn tuin bediend, alleen om het op mijn I²C lijn te kunnen doen is deze dadelijk de vervanger.

      Verwijderen