Autor |
PIC als Ersatz für einen CD4017 ? Suche nach: pic (2056) |
|
|
|
|
BID = 441767
Mortimer Neu hier
Beiträge: 33
|
|
Hallihallo
Zuerst möchte ich mich im voraus für meine schwammige Ausdrucksweise entschuldigen, ich glaube das Schwierigste ist es immer ,sich mit seinem (in meinem bzgl Elektronik beschränkten) Wortschatz so auszudrücken, dass die anderen wissen, auf was man raus will :D, daher beschreibe ich es mal so, wie ich es sagen würde:
Ich möchte per Taster (kurzer Impuls) über einen CD4017 die Kanäle einzeln durchschalten. Mit Entprellen und ausreichender Beschaltung alles 1a. Nur ist mir das ganze vieeel zu groß und aufwändig - selbst als SMD-Komponenten.
Jetzt ist die Frage (da ich nicht bewandelt bin in der Hinsicht), ob es nicht ein kleines Programm für nen schnuckeligen Pic 12c508 o.ä. gibt, welches das entprellen schon drin hat und die gleichen Funktionen wie der CD4017 besitzt. Das wäre praktisch, da ich dann nur 1x ic ohne großartige Beschaltung bräuchte, es sehr klein wäre, ich 100mA pro kanal hätte (soviel brauche ich im Leben nicht), ich eh nicht 10 Ausgänge bräuchte, sondern eben mal 3 oder 4... und und und
ausserdem könnte ich das Programm noch ein bisschen anpassen (das bekomme ich gerade noch hin)
Das das totale verschwendung eine PICs ist (ist ja überhaupt keine Rechenleistung dabei), nehme ich unter Inbetrachtnahme der Tatsache, dass ein solcher IC sehr billig ist liebend gerne hin.
Danke euch ! |
|
BID = 441775
faustian.spirit Schreibmaschine
Beiträge: 1388 Wohnort: Dortmund
|
|
Was ist denn an dem CD4017 aufwendiger, abgesehen von den paar Entprellbauteilen? |
|
BID = 441782
Mortimer Neu hier
Beiträge: 33
|
naja, mann muss am anfang das Clock-Signal definieren, dann muss man das Kabel für Reset an einen der Ausgänge hängen, bei dem es zurückspringen soll dann brauch man noch die Schaltung zum Enprellen + Transistoren für die Ausgänge (Brauche 50mA, zuviel für einen Logik-IC)
Das ganze muss schnellst möglich zusammengbaut sein, und seeeehr klein sein. Und mit klein meine ich dass die oben genannte Schaltung selbst als SMD-Version noch zu groß ist.
Und ein Pic hätte alles in einem, Reset und Clock stelle ich per Software am PC ein vor dem brennen.
Dann muss ich nur noch den Takt und die Spannung anlegen und kann direkt an die Ausgägnge gehen. Und in der 8-Pin-SMD-Version ist der PIC auch genau richtig von der Größe
|
BID = 441784
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Ich bin mir nicht sicher ob der soviel treiben kann an den Ausgängen. Beachte auch die max. Last der Versorgungspins!
Ansonsten ist sowas natürlich ein idealer Einsatzzweck für µCs der kleinen Sorte. Für AVR könnte ich dir jetzt nen Quellkode runterschreiben, aber von PIC habe ich keine Ahnung. Daher eben nur schematisch:
Hauptschleife: Taste abfragen.
Wenn alter Tastenwert xor neuem Tastenwert wahr ist (bzw. ein Pin auf 1 oder 0 steht )
-> entprellen (praktisch eine Schleife mit ein paar 10ms) [ist zwar eigentlich unsauber, aber praktisch]
-> einen Registerwert plus sich selbst addieren (oder mal zwei multiplizieren oder eben logisch gesehen alle Bits eine Stelle nach links schieben und Bit0 auf 0 setzen.)
-> neuen Wert eben abgleichen und gucken, ob eventuell wieder bei Bit0 angefangen werden soll (sozusagen bei einem bestimmten Ausgang wieder von vorn beginnen, wie beim '4017er den Ausgang n mit Reset verbinden.)
-> Und erneut in einer Schleife den Taster einlesen und auswerten.
_________________
[ Diese Nachricht wurde geändert von: DonComi am 7 Jul 2007 23:00 ]
|
BID = 441785
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
Der CD4017 funktioniert aber klaglos bis zu 18V. Bei dieser Spannung ist vom PIC wohl nur noch Asche übrig.
_________________
Haftungsausschluß:
Bei obigem Beitrag handelt es sich um meine private Meinung.
Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.
Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten !
|
BID = 441794
Mortimer Neu hier
Beiträge: 33
|
@DonComi:
Atmels sind auch wunderbar, hab noch ein paar flache atmega8 rumliegen, könntest du mir da nen passenden Code schicken. Hab mit Selberschreiben nix am Hut
@perl: Spannung ist wurst, habe die wahl zwischen 2,3 und 5 Volt. Daher optimal auch für die ganzen Mikrocontroller
Danke für die Mühen, Jungs
|
BID = 441806
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
Zitat :
| Und in der 8-Pin-SMD-Version ist der PIC auch genau richtig von der Größe |
Mir ist auch nicht recht klar, wie du die 10 Ausgänge des 4017 auf die verbleibenden 5 Pins verteilen willst.
Die 50mA pro Pin solltest du dir auch abschminken.
_________________
Haftungsausschluß:
Bei obigem Beitrag handelt es sich um meine private Meinung.
Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.
Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten !
|
BID = 441812
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
"Moin",
Ein Mega8 ist dazu wohl doch zu schade, wie ich finde. Der hat viel zu viel Potential.
Zitat :
|
Mir ist auch nicht recht klar, wie du die 10 Ausgänge des 4017 auf die verbleibenden 5 Pins verteilen willst.
|
--->
Zitat :
|
[...]ich eh nicht 10 Ausgänge bräuchte, sondern eben mal 3 oder 4.[...]
|
---
Zitat :
|
Die 50mA pro Pin solltest du dir auch abschminken.
|
Richtig. Das deutete ich ja bereits mit dem max. Strom der Versorgungspins an.
Zum Thema:
Einen fertigen Kode habe ich natürklich nicht da, aber ich denke, das sollte sich alles per Google finden lassen. Das Schema schrieb ich ja bereits auf. Du kannst ja mal versuchen, etwas zu machen, sei es auch noch so wenig, und ich werde dir dann weiterhelfen.
Es gibt viele Wege, die nach Rom führen. Du kannst es sowohl mit Basic Bascom, Assembler oder C probieren. Ich kann dir überall dann Hilfe leisten. Aber ein bischen Eigeninitiative sollte da sein .
P.S. Das bezieht sich allerdings, wie bereites mitgeteilt, nur auf AVR.
_________________
|
BID = 441816
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
Na, wenns nur 3 Ausgänge sein müssen, dann schau dir mal PIC10F200 & Co. an. Der kommt im 6-poligen SOT23 Gehäuse, ist also nicht größer als ein SMD-Transistor.
50mA kann er allerdings auch nicht treiben.
Wenn man aber noch 3 L2Fets im ebenfalls SOT23 Gehäuse dazunimmt, dann kann man ein paar Ampere schalten.
Das wären dann zusammen 4 SOT23-Gehäuse. Wenn man die beidseitig auf eine 0,5mm dicke Platine montiert, ist das noch hübsch klein.
_________________
Haftungsausschluß:
Bei obigem Beitrag handelt es sich um meine private Meinung.
Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.
Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten !
[ Diese Nachricht wurde geändert von: perl am 8 Jul 2007 0:40 ]
|
BID = 441906
Mortimer Neu hier
Beiträge: 33
|
Hi, danke für die Antworten.
Habe mich ein bisschen umgeguckt unf werde das ganze mit einem amtmega8 TQFP32° und bascom realisieren. Ich hatte mir zuerst ein Tutorial durchgelesen, bei dem direkt im Assembler geschrieben wurde - da habe ich natürlich nicht viel geblickt. Aber mit BASCOM dürfte ich für das was ich vorhabe klarkommen. If,then, else, ... das kenne ich von meinem grafischen Schultaschenrechner
Ich melde mich wenn ich den ersten code fertig habe
|
BID = 445796
Mortimer Neu hier
Beiträge: 33
|
Hallihallo
ich hab das ganze jetzt mit Bascom wunderbar auf die Reihe bekommen.
Aber jetzt tut sich nur noch ein Problem auf.
Der Atmega8 läuft auf 3-4 Volt von der Batterie. Ich habe ihn direkt an die Batterie angeschlossen, damit der Chip sich du Zustand der Ausgänge merkt, auch wenn das Gerät in dem er eingebaut ist (eine Spielekonsole mit Akku) beim Eisnchalten an der gleichen Stelle im Programm weitermacht.
Dummerweise zieht der Atmega dann 2-4mA, lässt man die Konsole nun liegen, wir der Akku entladen.
Jetzt hätte ich 2 Möglichkeiten, zu denen mir aber selbst Google nicht gut weiterhelfen konnte.
1. Den Zustand in den EEPROM des Chips schreiben und den Chip nicht mehr an der Batterie anschliessen, so dass er komplett aus ist und sich beim Neustart den Status aus dem EEPROM holt ...
oder
2. Den "powerdown" Befehl benutzen. Ich weiss, dass man einen Externen Interrupt brauch, um den Chip aufzuwecken.
Aber hier geht das Problem schon los:
Kann ich den Pin auf dem der Interrupt kommt bestimmen ? Wie muss das Signal aussehen ? Wie lautet der ProgrammCode dafür ?
Wäre klasse, wenn jemand hier nen Tipp für mich hätte
|
BID = 445808
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Das Problem bei Bascom ist, dass es für alles irgendwleche Befehle gibt, die sich a) keiner merken kann und b) weit entfernen vom Chip bzw. dessen Hardware und Register.
Es gibt bei manchen AVRs diverse Stromsparmodi, die man damit startet und auch auswählt, indem man in einem dafür bestimmten Register bestimmte Bits setzt und andere löscht.
Das Datenblatt gibt darüber Aufschluss, auch über das Aufwecken
Der Mega8 hat 2 ext. Interruptquellen, die einen IRQ auslösen können. (IRQ bedeutet Interrupt Request; beim AVR sehen sie so aus, dass eine Interruptflagge gesetzt wird und bei aktiviertem Interrupt zum Interruptvektor gehoppst wird) Diese definiert man ebenfalls mit einem bestimmten Register, ohne das bei Bascom übliche "config INTn = rising" oder "falling".
Das geht viel einfacher und hardwarenäher wenn man das entsprechende Register aus dem Datenblatt sucht und dann die richtigen Bits darin setzt. Möglich sind IRQ bei fallender, steigender, wechselnder Flanke oder bei LOW am INTn-Pin.
_________________
[ Diese Nachricht wurde geändert von: DonComi am 25 Jul 2007 22:48 ]
|
BID = 445910
Mortimer Neu hier
Beiträge: 33
|
Hi und dnake für die Antwort. Ich habe zwar einigermassen verstanden was du da geschrieben hast, aber es ist mir dann doch zu umständlich
Nach einer längeren Recherche kam dann dabei raus, dass man über die einfachen Befehle Writeeeprom und Readeeprom Zugriff bekommt.
Ich lasse dann einfach für jeden Status eine Zahl (1,2,3,...) in den den Eeprom schreiben und nach einem Stromausfall wieder auslesen.
Somit kann ich den Chip ganz ausschalten und habe einen Strom von 0
ich melde mich wenn der Code fertig ist
Grüsse
|
BID = 446012
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
Zitat :
| werde das ganze mit einem amtmega8 TQFP32° und bascom realisieren |
Damit ist diese
Zitat :
| mit klein meine ich dass die oben genannte Schaltung selbst als SMD-Version noch zu groß ist |
Forderung wohl vom Tisch.
_________________
Haftungsausschluß:
Bei obigem Beitrag handelt es sich um meine private Meinung.
Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.
Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten !
|
BID = 446022
Mortimer Neu hier
Beiträge: 33
|
hi Perl,
das stimmt schon, was du da sagst, aber dank der vielen Funktionen und Möglichkeiten des Atmegas, konnte ich alle weiteren ICs und Transistoren, die zusätzlich dazu gekommen wären mit Hilfe des Atmegas weglassen. Sprich ursprünglich wäre der Mikrocontroller nur ein Teil von viele gewesen, jetzt übernimmt er aber auch die Funktion aller folgenden LogicICs und anderer Bauelemente.
Somit habe ich viel Platz gespart, den ich für diese Bauart des m8 brauche.
Ich hoffe du verstehst das
|