Archiv der Kategorie: PIC Mikrokontroller

Hier finden Sie alles zu PIC Mikrocontrollern

DMX 512 Relais Karte mit vier potentialfreien Ausgängen

Vor einiger Zeit hat mir ein Freund eine ausrangierte Verkehrsampel aus seiner Firma organisiert, die ich gerne in Verbindung mit der auf diesem Blog vorgestellten StopWatch Applikation betreiben wollte.

Da die StopWatch Applikation über die Möglichkeit verfügt eine Ampelansteuerung auch per DMX Protokoll zu übertragen, habe ich hierfür diese kleine Schaltung entwickelt.

Der DMX512 Standard ist ein digitales Steuerprotokoll, wie es z.B. in der Bühnen und Veranstaltungstechnik eingesetzt wird. Dieser Standard wurde bereits im Jahr 1990 aus der Taufe gehoben und ist bis heute auch bei neuen Geräten der Bühnentechnik Standard Schnittstelle vorhanden. Die Abkürzung DMX steht für Digital Multiplex.

DMX Relaiskarte PIC16F648A
DMX Relaiskarte PIC16F648A
DMX_Relaiskarte-V1.1_PIC16F648A.zip
Version: 1.1
264.9 KiB
353 Downloads
Details

 

Diese Platine wurde als doppelseitige Layout erstellt,

DMX-Relaiskarte-V1.1-Oberseite DMX-Relaiskarte-V1.1-SMD

 

 

 

auf der Oberseite befinden sich alle bedrahteten Bauteile.
Auf der Unterseite der Platine finden die SMD Bauteile ihren Platz. So ist es möglich die SMS Bestückung im Reflow Verfahren zu fertigen.

 

Beschreibung der Funktionsweise:

Um beim Schaltungsdesign möglichst flexibel zu sein, wurden verschiedene Verwendungsansätze berücksichtigt.

So verfügt die Platine zur Einstellung der DMX Start Adresse über zwei Möglichkeiten.
Wurde der DIP – Schalter und die entsprechenden Dioden eingebaut, kann die Startadresse damit direkt eingestellt werden.  Die Einstellung der Adresse erfolgt binär codiert (siehe Tabelle).

Schalter Nummer Wertigkeit
1 1
2 2
3 3
4 8
5 16
6 32
7 64
8 128
9 256
10 BUS Terminierung (120 Ohm)

Für die Einstellung der Adresse werden 9 Schalter benötigt um den maximalen Adressraum von (0)1-511 Kanälen ansprechen zu können .
Da der DMX Bus von seiner physikalischen Struktur ein RS485 Bus ist, muss dieser an beiden Enden mit einem 120 Ohm Wiederstand abgeschlossen werden.

Befindet sich das Modul als letzter Teilnehmer also an einem Ende der Bus Topologie, kann mit dem 10. Schalter eine intern Terminierung aktiviert werden.
Hierfür muss der Schalter 10 in die Stellung „ON“ gebracht werden, dann liegt ein 120 Ohm Wiederstand parallel an den beiden Busadern A+ und B- und der Bus ist terminiert.

Die zweite Möglichkeit die dieses Modul bietet, besteht darin, den DIP – Schalter und die zugehörigen Dioden nicht zu bestücken und stattdessen den Taster für die Einstellung der DMX Adresse zu verwenden.
Die Software überprüft als erstes ob eine gültige Adresseinstellung am DIP Schalter eingestellt wurde, diese muss zwischen 1 – 511 liegen. Ist keine DIP Schalter installiert oder keiner der Schalter 1 – 9 geschlossen, wird entweder die letzte gültige DMX Startadresse aus dem internen EEprom Speicher des Mikrocontrollers geladen. Oder es kann eine neue DMX Startadresse über den Taster eingestellt werden.

Um den Status des Moduls zu signalisieren, befinden sich zwei LED’s auf der Oberseite der Platine. Die rote LED signalisiert die vorhandene Versorgungsspannung, die zweite LED dient der Signalisierung von Statusinformationen.

Folgende Anzeigen werden über die Status LED signalisiert:

  • Werden DMX Daten vom Bus empfangen, flackert die LED im Takt der Datenübertragung am Bus
  • Wurde eine falsche Adresseinstellung vorgenommen, blinkt die LED im zwei Sekundentakt, dass Modul muss neu gestartet werden.
  • Wurde eine gültige DMX Start Adresse eingestellt, wird nach dem Einschalten des Moduls die eingestellte Adresse ausgegeben. Die Anzeige der Adresse erfolgt in drei Gruppen, zuerst werden die Hunderterstellen, dann die Zehner und zuletzt die Einerstelle durch entsprechend häufiges blinken angezeigt.

Soll nun mit dem Taster eine neue DMX Startadresse eingestellt werden, wird der Taster während des Einschaltens gedrückt gehalten, die Status LED beginnt zu leuchten. Nun wird die Adresse genau wie bei der Anzeige der Adresse über die Status LED in drei Gruppen eingegeben. Zuerst werden die Hunderterstellen durch entsprechend häufiges drücken des Tasters eingestellt, dann die Zehnerstellen und am Schluss die Einerstelle.

Wurde der Wert durch entsprechendes häufiges drücken des Tasters eingegeben, muss eine kurze Pause eingehalten werden. Die Status LED erlischt kurz und beginnt dann wieder zu leuchten. Das ist das Zeichen, dass der nächste Zahlenblock eingegeben werden kann. Wird während des aufleuchten der Status LED keine Eingabe gemacht, wird für diesen Zahlenblock die Null übernommen.

Nachdem die Eingabe der Einerstelle abgeschlossen wurde, wird das Modul automatisch neu gestartet und initialisiert.
Wurde eine gültige DMX Adresse eingegeben, wird diese nun wie oben beschrieben durch entsprechendes Blinken der Status LED angezeigt. Anschließend ist das Modul bereit DMX Daten zu empfangen.

Wurde wie im zweiten Fall beschrieben der DIP – Schalter nicht installiert, stehen vier zusätzliche Port Pins des Mikrocontrollers zur Verfügung.

An diese Pins kann nun Beispielsweise ein LED Display (4 Bits Digital LED Tube Module 0.36 Inch Common Anode With Clock Display TM1637) angeschlossen werden, dass die aktuell eingestellte DMX – Adresse anzeigt.

Oder es könnten noch vier weitere Ausgänge geschaltet werden. Hierfür kann dann eine zusätzliche Platine über eine Stiftleiste aufgesteckt werden, die die entsprechenden Leistungsteiber und die Schaltelemente beherbergt.

Pic Basic Smple SD Card FAT32

Mit dem hier vorgestellten Pic Basic Pro Samplecode ist es möglich eine SD Karte, die vorher mit FAT 32 formatiert wurde zu lesen und zu beschreiben.

Das Beispiel stammt aus dem Fundus der der Firma Melab
Copyright 2008 microEngineering Labs, Inc.

PIC Basic, Read/Write SD Card with FAT 32
PIC Basic, Read/Write SD Card with FAT 32
sdfs3.zip
Version: Copyright 2008 microEngineering Labs, Inc.
1.5 KiB
543 Downloads
Details

SDCardInterface

' Name        : sdfs3.pbp
' Compiler    : PICBASIC PRO Compiler 2.6 (PBPL only)
' Assembler   : MPASM
' Target PIC  : PIC16F4550
' Hardware    : Schematic available in http://melabs.com/resources/samples/pbp/sdfs3.zip
' Oscillator  : 20MHz
' Keywords    : SD Card, SD/MMC, FAT16
' Description : 10/02/08 - PICBASIC PRO 2.50L test program to talk to FAT16
' formatted MMC/SD cards with PIC18F4550.  This is only a test program that
' is part of a larger project.  The complete fileset with schematic, includes,
' and details can be found at download:
' http://melabs.com/resources/samples/pbp/sdfs3.zip

Define    OSC    20    ' 20 MHz oscillator

' Alias PIC pins and registers for SD/MMC card
SD_WE        Var    PORTA.4    ' SD card write protect
SD_WE_TRIS    Var    TRISA.4    ' SD card write protect direction
SDI        Var    PORTB.0    ' SPI data in
SDI_TRIS    Var    TRISB.0    ' SPI data in direction
SCL        Var    PORTB.1    ' SPI clock
SCL_TRIS    Var    TRISB.1    ' SPI clock direction
SD_CS        Var    PORTB.3    ' SD card chip select
SD_CS_TRIS    Var    TRISB.3    ' SD card chip select direction
SD_CD        Var    PORTB.4    ' SD card detect
SD_CD_TRIS    Var    TRISB.4    ' SD card detect direction
SDO        Var    PORTC.7    ' SPI data out
SDO_TRIS    Var    TRISC.7    ' SPI data out direction

' Include the SD/MMC subroutines (found in http://melabs.com/resources/samples/pbp/sdfs3.zip)
Include "SDFS.PBP"
SDC_UseHardSPI = TRUE    ' Use hardware SSP port for SPI.

ADCON1 = 15        ' All I/O pins digital
Pause 100

' FSInit initializes the card and reads all the preliminary information from it
Gosub FSInit
Serout2 PORTC.6, 84, ["Init: ", Dec FAT_error, " ", Dec SDC_status, " ", Dec SDC_response, $d, $a]
If (FAT_error != 0) Then Stop

' Display card directory
Gosub FINDfirst        ' Find first file on card
While (FAT_error = 0)
Serout2 PORTC.6, 84, [Str FAT_FileName\11, $d, $a]
Gosub FINDnext    ' Find next file on card
Wend

' This section defines a specific short (8.3) filename
'  Note that spaces are use in empty elements and must be upper case for Windows
FAT_FileName[0] = "T"
FAT_FileName[1] = "E"
FAT_FileName[2] = "S"
FAT_FileName[3] = "T"
FAT_FileName[4] = "1"
FAT_FileName[5] = " "
FAT_FileName[6] = " "
FAT_FileName[7] = " "
FAT_FileName[8] = "T"
FAT_FileName[9] = "X"
FAT_FileName[10] = "T"

' Set file time to 8:30:10 and date to 1/1/2008
FAT_seconds = 5
FAT_minutes = 30
FAT_hours = 8
FAT_day = 1
FAT_month = 1
FAT_year = 28

' Open a file for write
FAT_mode = "w"        ' Write mode
Gosub FSfopen        ' Open file pointed to by Byte array FAT_FileName
Serout2 PORTC.6, 84, ["Open for write: ", Dec FAT_error, $d, $a]
If (FAT_error != 0) Then Stop

' Write to file
FAT_src[0] = "A"
FAT_src[1] = "B"
FAT_src[2] = "C"
FAT_count = 3
Gosub FSfwrite
Serout2 PORTC.6, 84, [ "Write ", Dec FAT_error, $d, $a]
If (FAT_error != 0) Then Stop

' Close file
Gosub FSfclose
Serout2 PORTC.6, 84, [ "Close ", Dec FAT_error, $d, $a]
If (FAT_error != 0) Then Stop

' Open a file for read
FAT_mode = "r"        ' Read mode
Gosub FSfopen        ' Open file pointed to by Byte array FAT_FileName
Serout2 PORTC.6, 84, ["Open: ", Dec FAT_error, $d, $a]
If (FAT_error != 0) Then Stop

' Read and display the whole file
FAT_count = 1        ' Read 1 byte to buffer at a time
Gosub FSfread
While (FAT_error = 0)
Serout2 PORTC.6, 84, [FAT_dest[0]]
FAT_count = 1    ' Read 1 byte to buffer at a time
Gosub FSfread
Wend
Serout2 PORTC.6, 84, [ "Read: ", Dec FAT_error, $d, $a]

' Delete a file
'    Gosub FSremove        ' Delete file pointed to by Byte array FAT_FileName
'    Serout2 PORTC.6, 84, ["Remove: ", Dec FAT_error, $d, $a]
'    If (FAT_error != 0) Then Stop

' Rename a file
' FAT_FileName2 is new name
'    FAT_FileName2[0] = "T"
'    FAT_FileName2[1] = "E"
'    FAT_FileName2[2] = "S"
'    FAT_FileName2[3] = "T"
'    FAT_FileName2[4] = "2"
'    FAT_FileName2[5] = " "
'    FAT_FileName2[6] = " "
'    FAT_FileName2[7] = " "
'    FAT_FileName2[8] = "T"
'    FAT_FileName2[9] = "X"
'    FAT_FileName2[10] = "T"
'    Gosub FSrename        ' Rename file pointed to by Byte array FAT_FileName
'    Serout2 PORTC.6, 84, ["Rename: ", Dec FAT_error, $d, $a]
'    If (FAT_error != 0) Then Stop

End

 

Modellbau Servo Trimmer

Modellbau Servotrimmer
Modellbau Servotrimmer
Modellbau-Servotrimmer.pdf
105.8 KiB
1307 Downloads
Details
Servotrimmer
Servotrimmer
Servotrimmer.zip
Version: 1.0
13.0 KiB
633 Downloads
Details

Mein Sohn hatte sich zu seinem sechsten Geburtstag ein ferngesteuertes Rennauto gewünscht. Nicht, dass er nicht schon welche gehabt hätte, aber wollte so ein richtiges, eins, dass schnell fahren kann.

Und genau das war anfangs das Problem, denn das ausgesuchte Modell brachte es bei Vollgas immerhin auf ca. 35 Km/h, was eindeutig viel zu schnell war.

So lag es an mir, hier eine praktikable Zwischenlösung zu finden und so ist der in diesem Artikel beschriebene Servo Limiter entstanden.

 Der Schaltplan zu der kleinen Mikrokontroller Platine:

Servolimiter Layout

Die Platine wurde mit Taget erstellt und ist ebenso wie das zugehörige HEX-File und eine PDF Beschreibung im nachfolgeneden Zipfile enthalten.

Das Pinning der Pfostenleisten wurde so gewählt, dass alle nötigen Anschlüsse für ein ISP zur Verfügung stehen. So kann nach der Bestückung der SMD Platine die Firmware bequem in den PIC geladen werden.

Ich empfehle für die Verbindung zum Empfänger und zum Aktor (Servo, Fahrtenregler) einen Servoverlängerung zu kaufen und dies in der Mitte zu teilen, die beiden Teile können dann nach dem Programmieren der Firmware bequem in die Löcher der Postenleisten eingelötet werden. Anschließend kann man das Modul noch in einen transparenten Schrumpschlauch einscheißen, so werden Kurzschlüsse vermieden, die LED’s bleiben sichtbar und der Programmiertaster bedienbar.

USB VID_PID

Damit der PC ein neues angeschlossenes USB Gerät erkennt und den passenden Treiber dafür installieren kann, besitzt jedes UBS Gerät eine VID (Vendor Identifikation) in Kombination mit einer PID (Produkt Identifikation).

Jede Kombination aus VID und PID ist einmalig. Wenn man nun selbst ein Gerät bauen möchte, dass über USB mit dem PC kommuniziert, gibt es zwei Möglichkeiten dies zu realisieren. Ein unsauberer aber einfacher Weg mit selbst entwickelten USB Geräten zu arbeiten, ist es irgend eine Kombination aus VID_PID zu verwenden, die keinem der dem PC bekannten USB Geräte bereits zugewiesen ist.

Eine echte Alternative hierzu bietet Microchip an, hier kann eine Sogenannte Sublizenz für eine eigene VID_PID beantragt werden. Der nötige Antrag hierzu findet sich auf der Hompage von Microchip. Diese Lizenz ist jedoch widerruflich und kann jederzeit auch wieder entzogen werden, dafür aber kostenlos.

Ich habe mir eine eigene Sublizenz für Experimente und Prototypen bei Microchip beantragt und diese auch prompt innerhalb weniger Tagen erhalten.

Dillinger-Engineering, USB-Devices

VID: 04D8                         PID: FAF0

Microchip Universal Serial Bus Vendor ID Sublicense signiert am 08.11.2010

Programmierbares drittes LED-Bremslicht

 

Hallo Autofans,

in Sachen Sicherheit im Straßenverkehr besonders im Bereich der Fahrzeugbeleuchtung, hat sich in den letzten Jahren sehr viel getan, angefangen mit dem adaptiven Kurvenfahrtlicht bis hin zum intelligente Fernlichtassistenten. Aus diesem Grund möchte ich heute gerne über meine neuste Innovation berichten, ein „programmierbares Bremslichtzusatzmodul“.

Die meisten Fahrzeuge verfügen heute über ein drittes, meist in der Heckscheibe angebrachtes LED Zusatzbremslicht. Da es wesentlich höher angebracht ist als die normalen Bremseleuchten, wird es bessonder gut von den weiter hinten fahrenden Fahrzeugen gesehen.

Gerade bei einem Stauende ist es wichtig, dass man frühzeitig auf ein stehendes Fahrzeug aufmerksam wird. Mit diesem Zusatzmodul, dass einfach zwischen die Anschlussleitungen des dritten Bremslichts geschliffen wird, können nun acht verschiedene Signalisierungssequenzen über Steckbrücken eingestellt werden.

  • Soft On, 0% – 100%
    3 x Blink, On
    3 x Blink, Fade 20% <-> 100 %, Fade ….
    3 x Blink, On, Pause ….
    4 x Blink, OnFertig aufgebaute Platine des Led Bremslichts
    Fade 20% <-> 100% ….
    Fast Flashing ….
    TÜV (Standard Bremslicht)

Das Modul ist für alle Fahrzeugtypen mit LED – Bremseleuchte geeignet und kann mit wenigen Handgriffen montiert und konfiguriert werden. Aufgrund seiner kleinen Bauform findet es leicht im Inneren des Bremslichtgehäuses Platz und ist somit von außen nicht erkennbar.

 

Blogverzeichnis - Blog Verzeichnis bloggerei.de