Aus RN-Wissen.de
Wechseln zu: Navigation, Suche


RN-Digi I2C Digitalanzeige
Dieses Board wurde als Erweiterung zu den Roboternetz-Controllerboards (RNBFRA,RN-Control,MinControl usw.) entworfen, eignet sich aber für alle Controllerboards mit I2C-Bus Anschluss.

Es dient zum Anzeigen von 4 stelligen Zahlen. Dabei werden optisch ansprechende und extra große 7-Segmentanzeigen bereitgestellt (ca. 25mm Ziffernhöhe, Anzeige rot, wahlweise auch kleinere). Die Ansteuerung erfolgt sehr einfach per I2C-Bus mit einfachen Kommandos. Die Anwendungsmöglichkeiten sind dem Programmierer vorbehalten. Denkbar wäre das Board für den Aufbau von Uhren, Funkuhren, Zählern, Lottozahlgeneratoren, Würfeln, Temperaturanzeigen, Kompass usw., welche von weitem erkennbar sein müssen. In Kombination mit RN-Speak und RN-Control wäre zum Beispiel ein sprechender Wecker denkbar.


Leistungsmerkmale auf einen Blick

  • Sehr einfache Ansteuerung per I2C Bus
  • Keine extra Spannungszuführung notwendig da Board über das I2C-Bus Kabel mit Strom verorgt wird
  • Programmierbare Helligkeit
  • Jedes einzelne Segment der 7-Segmentanzeige kann angesteuert werden
  • 4 Dezimalpunkte möglich
  • Controller wird nicht belastet. Die Ziffern werden solange angezeigt, bis neue Ziffer gesendet wird. Keine Interrupts oder Bus-Belastung!
  • Preisgünstig und schneller Aufbau in wenigen Minuten möglich
  • 4 verschiedene Slave Adressen per Jumper wählbar
  • Kleines Lochraster Experimentierfeld für Erweiterungen Taster, I2C-Baustein (Funkuhr etc.) etc.
  • Kompakt, Roboternetz-Standard-Format 100x78 (halbes Euroformat), Huckepack mit anderen Boards kombinierbar
  • Wahlweise mit großen oder kleineren Segmenten bestückbar (Bausatz inkl. große)
  • Platinen und Bausatzservice
  • Deutsche Doku mit Programmbeispielen für RN-Control und RNBFRA-Board

Aufbau und Anwendung

Der Aufbau der Schaltung ist durch die vorgefertigte Platine bzw. den Bausatz eigentlich völlig problemlos auch von Elektronik-Einsteigern zu bewerkstelligen. Durch den Bestückungsdruck und die Bestückungsliste, etwas weiter hinten in dieser Dokumentation, ist der Aufbau unkritisch. Aufgrund moderner Bauteile (7-Segment Controller) ist es gelungen, das dieses Board nur sehr wenig Bauteile benötigt. Auf Logikbausteine konnte verzichtet werden, da das Board über ein Spezial-IC für die Ansteuerung von 7 Segmentanzeigen verfügt.

Die Schaltung benötigt in der Regel eine Aufbauzeit von ca. 30 – 60 Minuten.

Dennoch einige Anmerkungen zu kleinen Hürden:

  1. Beim Einlöten der Segmentanzeigen darauf achten das diese richtig herum eingesetzt werden. Der Dezimalpunkt muss nach unten zum IC zeigen.
  2. Auf dem I2C-Bus muss die Batteriespannung liegen (entsprechend der Roboternetz-Definition). Bei einigen Controllerboards muss dazu ein Jumper auf dem jeweiligen Controllerboard eingesteckt werden. Näheres dazu steht bei der Beschreibung der I2C-Buchse ihres Controllerboards.

Die Batteriespannung darf 7V nicht unterschreiten, falls die großen Segmentanzeigen eingesetzt werden. Ist die Batteriespannung höher als 10V, so muss der im Bestückungsplan eingezeichnete Spannungsregler auch eingelötet werden. Bei 7 bis 10 V Batteriespannung kann dieser wahlweise weggelassen werden. Bei den kleineren Segmentanzeigen reicht bereits 5V aus.

Das waren eigentlich schon die besonderen Punkte die zu beachten sind. Ansonsten natürlich sauber mit einem 15–25 W Lötkolben alles auf der Unterseite verlöten. Grundkenntnisse beim Löten werden empfohlen. Nach dem Aufbau sollten Sie nochmals alle Lötpunkte kontrollieren.

Nach dem Aufbau können Sie das Baord übe rein 10 poliges Kabel mit ihrem Controllerboard verbinden. Eine Funktion ist jedoch erst dann zu ersehen, wenn Sie das Testprogramm auf Ihrem Controller starten.

Erläuterung der Anschlüsse, Regler und Kurzschlussbrücken

Anschlussbezeichnung Erläuterung
ADR1 Slave Adresse einstellen

Über diesen Jumper wird die Slave Adresse eingestellt. Über diese Adresse wird das Board später vom Controller angewählt.

In dieser Stellung ist die Slave Adresse auf Hex 70 gesetzt

Rndigijumpperstellung1.gif

In dieser Stellung ist die Slave Adresse auf Hex 76 gesetzt

Rndigijumpperstellung2.gif

Durch diese Stellung wird bestimmt, das die Slave Adresse über den Jumper ADR2 gewählt wird (siehe ADR2)

Rndigijumpperstellung3.gif

ADR2 Slave Adresse einstellen

Dieser Jumper hat nur dann eine Bedeutung, wenn ADR1 entsprechend eingestellt ist (siehe ADR1)

In dieser Stellung ist die Slave Adresse auf Hex 72 gesetzt

Rndigijumpperstellung3.gif

In dieser Stellung ist die Slave Adresse auf Hex 74 gesetzt

Rndigijumpperstellung5.gif

JP1 Spannungsregler aktiv

Das Board verfügt über einen 8 bzw. 9 V Spannungsregler welcher über das I2C-Buskabel mit der Eingangsspannung (Batteriespannung) versorgt wird. Ist die Batteriespannung unter 10V, so kann der Spannungsregler hiermit überbrückt und weggelassen werden. Der Kurzschlusstecker muss jedoch entfernt werden, wenn die Spannung über 10V liegt. I2C-Bus

I2C-Bus Wenn Sie die I2C-version des Boards gebaut haben, also den entsprechenden Controller eingesteckt haben, dann ist diese I2C-Buchse für die Steuerung zuständig.

Der I2C-Bus benötig nur 2 Leitungen für alle Funktionen. Entsprechend der Roboternetz-Norm wird hier ein 2x5 poliger Stecker angeschlossen. Die Belegung entspricht exakt der von allen Roboternetz-Boards:

Pin 1 SCL (Taktleitung)
Pin 3 SDA (Datenleitung)
Pin 5 +5V  (Wird nur ab Version 1.1 der Platine für Experimentierfeld benutzt)
Pin 7 +5V  (Wird nur ab Version 1.1 der Platine für Experimentierfeld benutzt)
Pin 9  Batteriespannung Diese Leitung wird zur Spannungsversorgung benutzt 
Pin 2,4,6,8 GND
Pin 10  INT  Diese Leitung wird bei RN-Digi nicht benutzt

Bestückungsplan

RN-Digi Bestückungsplan (verschiedene Segentanzeigen einsetzbar)


Bauteile Bestückungsliste

Bauteil Wert                Beschreibung                
----------------------------------------------------------------------------
ADR1                        Stiftleiste 3 polig            LU 2,5 MS3
ADR2                        Stiftleiste                    LU 2,5 MS2
C1        100n              Keramik Kondensator            KERKO100N
C2        100n              Keramik Kondensator            KERKO100N
C3        2,7n              Keramik Kondensator            KERKO 2,7N
C4        220uF             Elko                           RAD 220/35
I2C-BUS                     Wannebuchse Gewinkelt          WSL 10W
IC1       SAA1064           IC SAA1064   LED Ansteuerung   SAA 1064
IC2       7808T             Spannungsregler 8V             7808
JP1                         Stiftleiste 2polig             LU 2,5 MS2
LEDSA10-1 SIEBENSEGMENTSC10 Siebensegmentanzeige 21mm hoch Conrad 160032-U0
LEDSA10-2 SIEBENSEGMENTSC10 Siebensegmentanzeige 21mm hoch Conrad 160032-U0
LEDSA10-3 SIEBENSEGMENTSC10 Siebensegmentanzeige 21mm hoch Conrad 160032-U0
LEDSA10-4 SIEBENSEGMENTSC10 Siebensegmentanzeige 21mm hoch Conrad 160032-U0
R1        22k               Metallschichtwiderstand 22k    METALL 22K 
R3        10k               Metallschichtwiderstand 10k    Metall 10,0k
R2        18k               Metallschichtwiderstand 18k    METALL 18,0K
T1        BC338-40          Transistor BC 338-40           BC 338-40
T2        BC338-40          Transistor BC 338-40           BC 338-40
3 Stück                     Befestigungsbolzen
1 Stück                     Bedruckte Platine              Robotikhardware.de
2 Stück                     Jumper

Schaltplan

Zum vergrößern anklicken

Inbetriebnahme der Digitalanzeige

Nachdem Sie das Board aufgebaut bzw. ein Fertigboard erworben haben, wird hier kurz erläutert wie Sie das Board in Betrieb nehmen.

  1. Bitte vergewissern Sie sich zunächst, ob alle Jumper korrekt entsprechend der vorhergehenden Beschreibung gesteckt sind. Beachten Sie bei der Slave Adresse, das sich diese nicht mit anderen Boards überscheidet. Insbesondere RNBFRA-Besitzer sollten darauf achten das die PCF-Bausteine auf dem RNBFRA-Board eine andere Slave Adresse besitzen.
  2. Verbinden Sie das Board über ein 10 poliges I2C-Kabel mit ihrem Controllerboard (passende Kabel gibt es bei robotikhardware.de bzw. lassen sich sehr schnell selbst anfertigen). Achten Sie auch darauf dass ihr Controllerboard die Batteriespannung auf den I2C-Bus legt. Bei RN-Control erfolgt dies über einen Jumper, welcher standardmäßig bereits richtig eingesteckt ist.
  3. Laden Sie das nachfolgende Testprogramm in Ihren Controller und betätigen Sie Taster 2

Das war´s!

Beispielprogramm für RN-Control

Digitalanzeige an RN-Control

Wie einfach das Board angesteuert wird, kann dem Beispielprogramm entnommen werden. Es ist empfehlenswert, die Unterfunktionen einfach in ein eigenes Programm zu übernehmen. Einfacher geht’s nicht mehr! Wer noch mehr Infos zu der Ansteuerung benötigt kann auch in das Datenblatt des IC´s SAA1064 schaun, dieses ist auf der CD (die dem Bausatz beiliegt) enthalten.

Tastenbelegung im Demo

Taste 1 Zeigt auf allen 4 Ziffern eine 0

Taste 2 Zählt nacheinander alle 4 Ziffern von 0 auf 9 hoch

Taste 3 In dem Demo nicht verwendet

Taste 4 In dem Demo nicht verwendet

Taste 5 In dem Demo nicht verwendet


'###################################################
'rncontrol_digitest.BAS   Demo zu RN-Digi
'für
'RoboterNetz Board RN-CONTROL ab Version 1.1 und
'Zusatzboard RN-DIGI (vierstellig großes LED-Display per I2C)

'
'Aufgabe:
' Dieses Testprogramm demonstriert die Ansteuerung von RN-Digi

' Den verschiedenen Tasten sind bestimmte Funktionen zugeordnet
' Taste 1: Alle Ziffern auf 0 stellen (genau wie bei Reset)
' Taste 2: Nacheinander alle Ziffern von 0 bis 9 zählen


'Autor: Frank
'Weitere Beispiele und Beschreibung der Hardware
'unter http://www.Roboternetz.de oder robotikhardware.de
'Eigene Programmbeispiele sind im Roboternetz gerne willkommen!
'##############################################################

Declare Function Tastenabfrage() As Byte
Declare Sub Led_display_init()
Declare Sub Led_display(byval Ziffer As Byte , Byval Zahl As Byte)

$regfile = "m16def.dat"

Const Rn_digi_slave_write = &H70
Const Rn_digi_slave_read = &H71
Const Dezimalpunktziffer = 2                                'Segment wo Dezimalpunkt leuchten soll (0=keinen)

Dim Segmente As Byte
Dim Z As Byte
Dim I As Byte
Dim N As Integer
Dim Ton As Integer

$crystal = 16000000                                         'Quarzfrequenz
$baud = 9600

Config Adc = Single , Prescaler = Auto                      'Für Tastenabfrage und Spannungsmessung
Config Pina.7 = Input                                       'Für Tastenabfrage
Porta.7 = 1                                                 'Pullup Widerstand ein
Dim Taste As Byte



I2cinit
Led_display_init

I = 0
Sound Portd.7 , 400 , 450                                   'BEEP
Sound Portd.7 , 400 , 250                                   'BEEP
Sound Portd.7 , 400 , 450                                   'BEEP
Print
Print "**** RN-CONTROL  V1.4 *****"
Print "Das neue Experimentier- und Roboterboard"
Print
Do




   Taste = Tastenabfrage()
   If Taste <> 0 Then

      Select Case Taste
         Case 1
            For Z = 1 To 4
              Led_display Z , 0
            Next Z

         Case 2
            For Z = 1 To 4
               For I = 0 To 9
                   Led_display Z , I
                   Waitms 300
               Next I
            Next Z

         Case 3

         Case 4

         Case 5

      End Select
      Sound Portd.7 , 400 , 500                             'BEEP
   End If

   Waitms 100
Loop

End


'Diese Unterfunktion fragt die Tastatur am analogen Port ab
Function Tastenabfrage() As Byte
Local Ws As Word

   Tastenabfrage = 0
   Ton = 600
   Start Adc
   Ws = Getadc(7)
   If Ws < 1010 Then
      Select Case Ws
         Case 410 To 450
            Tastenabfrage = 1
            Ton = 550
         Case 340 To 380
            Tastenabfrage = 2
            Ton = 500
         Case 265 To 305
            Tastenabfrage = 3
            Ton = 450
         Case 180 To 220
            Tastenabfrage = 4
            Ton = 400
         Case 100 To 130
            Tastenabfrage = 5
            Ton = 350
      End Select
      Sound Portd.7 , 400 , Ton                             'BEEP
   End If

End Function



Sub Led_display_init()
  I2cstart
  I2cwbyte Rn_digi_slave_write
  I2cwbyte 0                                                'Control Byte

  'Dynamic Alternative Mode und Helligkeit
  'Die oberen 3 Bits bestimmen die Helligkeit
  'Wenn es dunkler sein soll dann z.b. &B0110111
  I2cwbyte &B1110111

  I2cstop

  'Alle Ziffern auf 0
  For Z = 1 To 4
       Led_display Z , 0
  Next Z

End Sub


Sub Led_display(ziffer An Byte , Zahl As Byte)
     I2cstart
     I2cwbyte Rn_digi_slave_write
     I2cwbyte Ziffer

     Select Case Zahl
         Case 0:
               Segmente = &H3F
         Case 1:
                Segmente = &H06
         Case 2:
                Segmente = &H5B
         Case 3:
                Segmente = &H4F
         Case 4:
                Segmente = &H66
         Case 5:
                Segmente = &H6D
         Case 6:
                Segmente = &H7D
         Case 7:
                Segmente = &H07
         Case 8:
                Segmente = &H7F
         Case 9:
                Segmente = &H67
         Case Else :
                Segmente = &H80                             'Ansonsten Dezimalpunkt

     End Select

     If Dezimalpunktziffer = Ziffer Then Segmente = Segmente Or &H80
     I2cwbyte Segmente
     I2cstop
End Sub

Damit haben Sie den ersten Einstieg erfolgreich abgeschlossen. Wenn Sie das Demoprogramm gründlich studieren, werden Sie viele Sachen davon ableiten und in eigenen Programmen verwenden können.

Autor

Siehe auch

Weblinks

Komplette Anleitung als PDF-Datei

Platinenservice.gif hier Bausatzservice.gif hier