Hallo, ich bin auf der Suche nach eine günstigen Möglichkeit 24 oder mehr Lichtschranken mit einem PC zu überwachen und die Auslöser aufzusummieren. Die Lichtschranken registrieren Gasbläschen in einer Sperrflüssigkeit, die bei einer chemischen Reaktion entstehen. Ich habe auch schon ein Prototypen fertig der direkt an der serielle Schnittstelle (RS232) hängt. Das funktioniert super. Ich benötige leider nur mehr als einen Eingang. Ich habe beim Prototypen festgestellt, dass die Abfrage des Phototransistor über 5kHz liegen muss, ansonsten gehen Signale verloren, will heißen ein Gasbläschen schummelt sich vorbei und der Spannungsabfall wird nicht registriert. Eine Möglichkeit, die ich in Betracht ziehe wäre, drei Parallel - Seriellwandler (IC4021 vergl. www.skilltronics.de) in Reihe zu schalten und somit 24 Eingänge abfragen zu können. Fragwürdig ist, ob die Geschwindigkeit ausreicht (5kHz an jedem Eingang). Eine weitere Möglichkeit ist einen Counter mit seriellem Ausgang zwischen Phototransistor und den Eingängen des 4021 zuschalten. Ein 8-Bit Counter sollte genügen, da in der Minute maximal 100 Bläschen entstehen, jedes Bläschen löst zwei Spannungsabfälle aus also max. 200 counts. Wenn der Counter alle 1 bis 10 Sekunden abgefragt wird, reicht das massig. Der Counter müsste allerdings einen seriellen Ausgang haben, und so einen habe ich bisher nicht finden können. Vielleicht gibt es auch eine sehr viel einfachere Lösung. Ich bin offen für alles was Erfolg verspricht. Grüße und Vielen Dank
Wie darf ich denn direkt an die serielle Schnittstelle verstehen? Lösbar wäre das ganze ja mit nem passenden uC der dir dann über die Serielle Schnittstelle Daten schickt was wann geschaltet ist.
Wenn kein Ereignis verpasst werden soll, würde ich die Signale nicht direkt am PC auswerten. Außer du verwendest ein Echtzeitbetriebssystem. Es gibt 2 Möglichkeiten wie du das professionell lösen kannst. Zum Einen mit einer speziellen I/O Karte für den PC. (z.B. von National Instruments) Oder zum Anderen mit einem Mikrocontroller und einem UART-RS232 Pegelwandler.
Ich würde irgendnen Atmel mit 16 Eingängen und nem Uart nehmen, den Uart über nen Pegelwa ndlerauf die RS232 Schnittstelle geben und mit dem Controller im 5kHz Takt oder mehr oder weniger die Eingänge abfragen und dann aufem Uart z.B. das ausgeben: 01:0,02:0,03:0,04:1,05:0,06:0,07:1,08:0,09:0,10:0,11:1,12:0,13:0,14:0,15 :1,16:1, ... Das kann man dann ja Problemlos mittem PC auswerten.
Hallo, Bei Modellbahnen wird als Rückmeldekanal eine Kette Schieberegister benutzt (Stichpunkt "S88"). Dazu gibt es Linux/Windows-Programme die so einen Bus ausnutzen. Zeitmäßig sollte das locker für 24 Eingänge reichen. http://www.der-moba.de/index.php/S88-R%C3%BCckmeldebus Irgendwo habe ich auch einfache DIY PC-Interfaces gesehen (praktisch nur Pegelwandlung auf RS232).
Danke für die schnelle Antwort, An Frederik: Direkt an der seriellen Schnittstelle meint: Es sind eine IR-Diode an der DSR und GND Leitung und ein passender Phototransistor an der RTS und CTS Leitung meines Com-Ports angeschlossen. Ich hab ein Programm in VisualBasic geschrieben der die DSR Leitung (Photodiode) anschaltet und das Event PinChanged abfragt. Immer wenn einer Änderung stattgefunden hat und die CTS Leitung True wiedergibt wird einer dazugezählt. Der Rest ist hoffe ich klar. Ich habe auch in einem Versuch einen Timer gesetzt (bei vb ist ein minimaler Intervall von 1 ms möglich) und so in regelmäßigen Zeitabständen CTS abgefragt und dabei festgestellt das von hundert Signalen etwa eins verlorengeht. Bei dem PinChanged-Event habe ich Verluste nicht merken können sie liegen weit unter einem von tausend. Bei 5kHz sollte nur noch eines von fünfhundert Signalen verlorengehen, ein Fehler, mit dem ich leben kann, solange er systematisch (linear) ist, wird er im Faktor ‚ml pro count‘ einfach rausgerechnet. Der Ganze Versuchsaufbau hat einen Fehler von etwa 3% was machen 0,2% aus? An Barny/David: Eine TTL-I/O Karte habe ich auch schon in Betracht gezogen, z.B. von Quancom bei 'conrad' für ~200€, dass übersteigt mein Büget. Was das Programmieren von Mikrokontrollern angeht, davon habe ich kaum Ahnung, aber man kann das lernen, wenn man Zeit hätte und keine Ausrüstung. Langfristig sicherlich interresant mal sehen im Winter wenn das Wetter schlechter ist. An Thomas: Das werde ich mir mal an schauen. ‚S88‘ Vielen Dank für die Antworten. Gruß Dominik
Wenn die Aufgabe nur darin besteht, zu überwachen OB und WANN Gasbläschen auftreten könnte man doch die Lichtschranken einfach alle ODER-Verknüpfen. Je nach Technik der Lichtschranke würden dazu schon ein bisschen Draht und ein paar Dioden reichen.
kann dabei nicht einfach auch eine blase zwischen zwei sensoren aufsteigen ohne das du es mitbekommst?
Folgendes kannst du machen: Die Abfrage deiner Phototransistoren verlagerst du vom PC in einen Mikrocontroller deiner Wahl. Das können alle ausreichend schnell. Wenn du noch eine RTC (Real Time Clock) an den Mikrocontroller anschließt, kriegst du deine "Blasenevents" locker Millisekundengenau auf einfache Weise. Die serielle Schnittstelle - die praktisch jeder Mikrocontroller mindestens 1 mal hat - nutzt du dann nur noch zur Übertragung der vom Mikrocontroller fertig aufbereiteten Daten zum PC.
An Thomas: Die S88 aus dem Modellbau sind leider auch nicht gerade günstig. Da ich zwei benötigen würde. Wären IO-Karte und S88 preislich nicht mehr weit auseinander. An Andreas: Über wachen war vielleicht nicht ganz korrekt ausgedrückt. Es müssen schon alle einzeln ausgezählt werden, da an jedem Zähler ein Reaktionsgefäß angeschlossen ist. Und ich von jedem ich die Gasmenge über der Zeit brauche. An Martin: Wenn Du meinst, dass rein mechanisch eine Blase den Strahlengang umwandert. Nein, dass alles ist in einem Reagenzglas (Innendurchmesser ~15mm) und eine Düse erzeugt Bläschen, die groß genug sind, um sicher den Strahlengang zu passieren. Signale gehen verloren weil die Blasen genau in der Millisekunde den Transistor auslösen, in der er nicht abgefragt wird. An Michael: Klingt einfach, ist das auch so? Mikrocontroller (IC) meiner Wahl wäre wie oben schon erwähnt ein Counter mit serieller Schnittstelle, den hab ich bisher aber nicht finden können. Es gibt Counter ICs mit parallelem Ausgang zuhauf, das Signal müsste erst wieder seriell umgewandelt werden. Ein bisschen zu kompliziert. Ist gibt von Mikrochip einen PIC10200 (Nr. ohne Gewähr). Der hat einen 8-Bit Timer so weit ich da durchsehe kann der über eine externe Clock (mein Phototransistor) auch als Counter geschaltet werden. Dazu 3 oder 4 I/O Pins in Kombination mit den 'IC4021' sollten die Daten irgendwie in den Rechner kommen können. Mein Hacken daran ist Ausrüstung kaufen (PICKit o.ä.) und Assembler lernen. Darum wäre mir ein fertiger IC lieber vielleicht hat jemand einen Tipp. Danke
Dominik R. schrieb: > Ist gibt von Mikrochip einen PIC10200 (Nr. ohne Gewähr). Der hat einen > 8-Bit Timer so weit ich da durchsehe kann der über eine externe Clock > (mein Phototransistor) auch als Counter geschaltet werden. Dazu 3 oder 4 > I/O Pins in Kombination mit den 'IC4021' sollten die Daten irgendwie in > den Rechner kommen können. Mein Hacken daran ist Ausrüstung kaufen > (PICKit o.ä.) und Assembler lernen. Dann brauchst du wieder für jede Lichtschranke einen Prozessor. Nimm einfach einen Prozessor mit ausreichend Pin-Change Interupts. Dann kannst du einfach hochzählen. Ich weis nicht wie's mit den Pic's aussieht. Aber jeder ATmega (AVR) hat einen USART eingebaut. Dass ist nichts anderes wie eine RS232 Schnittstelle mit 0V/5V Pegeln. Die AVR's haben den Vorteil dass die Programmierumgebung nichts kostet( AVR-Studio + WinAVR ) und einfach in C programmiert werden kann.
Ich glaube an deiner Stelle würd ich mir einen STK500 + ATMega32 besorgen der hat die serielle sowie 32IO´s... der hat einen 16 bit counter sowie 2 8bit....baudratenquarz.... Und für Anfänger tuts auch Bascom oder für härtergesottene c.....
Dominik R. schrieb: > An Michael: > Klingt einfach, ist das auch so? Nein (und nein =) > Mikrocontroller (IC) meiner Wahl wäre wie oben schon erwähnt ein Counter > mit serieller Schnittstelle, den hab ich bisher aber nicht finden Nene, nicht ganz so primitiv. Wie schon irgendwo steht, nimm am besten einen Atmega - zum Beispiel 32 - und probier mit dem ein bisschen rum. Sprich: Pins einlesen, über serielle Schnittstelle (UART genannt) zum PC übertragen, usw. Alles, was du dazu brauchst - inkl persönlicher Unterstützung - findest du hier im Forum und beim AVR-Tutorial. Wenn du das hast, versuch dich daran, die 24 Eingänge (das können auf die Schnelle 24 Stück Draht auf einen Massekontakt sein) einzulesen und auszuwerten und dann auch zum PC zu übertragen. > können. Es gibt Counter ICs mit parallelem Ausgang zuhauf, das Signal > müsste erst wieder seriell umgewandelt werden. Ein bisschen zu > kompliziert. Und auch der etwas falsche Ansatz. Da muss mehr "Intelligenz" her. > Mein Hacken daran ist Ausrüstung kaufen > (PICKit o.ä.) und Assembler lernen. Es wäre vergebne Liebesmüh. Dein Ansatz ist dir noch nicht ganz klar - wenn ich das mal so sagen darf =) Es gibt übrigens auch für die AVRs (Familie der Atmega) Basic. Nennt sich Bascom. Damit musst du nicht mal Assembler oder C lernen. Siehe dazu: http://halvar.at/elektronik/kleiner_bascom_avr_kurs/ Was ich mit meinem vorigen Beitrag sagen wollte: Der Mikrocontroller übernimmt alles zur Detektion, was du bisher mit dem PC gemacht hast. > Darum wäre mir ein fertiger IC lieber vielleicht hat jemand einen Tipp. Atmega32. Ja, auch der Tipp mit dem STK500 ist gut. Es garantiert reibungsloseres Einsteigen.
Ich würde aber einen uC nehmen, der über sogenannte PCINT verfügt. Da bekommt man ein Ereignis, sobald sich ein Pegel an einem Eingang ändert.
Barny schrieb: > Ich würde aber einen uC nehmen, der über sogenannte PCINT verfügt. > Da bekommt man ein Ereignis, sobald sich ein Pegel an einem Eingang > ändert. Ist in den Fall schon fast zuviel Aufwand. Eine Polling Schleife, die alle Lichtschranken nacheinander durchgeht und auf Veränderung prüft. In den Pausen dazwischen kann man ja dem Mega noch ein wenig andere Arbeit zuschanzen (vielleicht etwas bei SETI mitrechnen), damit er sich nicht langweilt.
Die serielle Schnittstelle würde sogar gehen, wenn du ein kleines bisschen mit deiner Abtastrate runtergehst: 24 Werte * 1bit = 3 Byte 3Byte*5Khz = 15KB/s dafür brauchst du dann 15.000*8=120.000Baud. Da man mit dem PC aber nur bis 115200baud gehen kann. Kannst du nur 115200 8 3 = 4800 Messungen pro sekunde machen. EDIT: Hab überlesen, dass es nur hundert Bläschen sind, dann ist es effizienter wenn du es jedes Bläschen überträgst wenn es ankommt.
Sieh dir mal den USB4ALL von Sprut an. Mit externen Portexpandern ist das kein problem. Überwache 128 Eingnge damit. Mit 10khz! Portexpander habe ich über I2C angebunden. Software habe ich in VB geschrieben, weil wirklich einfach zu bedienen.
Wenn du sowieso mit Basic und der seriellen Schnittstelle arbeitest, schau dir mal das an: http://www.b-kainka.de/lpmikros.htm Da haste dann erst mal alles zusammen, "Progger", Mikrocontroller, Bascom, serielle Schnittstelle.
Naja für die serielle Schnittstelle vom PC musst du sowieso programmieren lernen. Allerdings würde ich dann nicht mit VB anfangen (ist zwar einfach, allerdings auch nicht sehr professionel). Ich würde z.b. c# nehmen, da ist es auch sehr einfach,.
Samuel K. schrieb: > Naja für die serielle Schnittstelle vom PC musst du sowieso > programmieren lernen. Allerdings würde ich dann nicht mit VB anfangen lesen. das programm steht schon. deswegen reden wir hier auch alle von basic.
Dominik R. schrieb: > 24 oder mehr > Lichtschranken Ein bisschen genauer müsste es schon sein. Mit einem 40-Pin ATMEGA hast du für 24 genug Pins. Du musst nur in regelmäßigen Abständen drei Ports auslesen (pollen bzw. Timer-ISR) und die Bits auswerten. Ab und an schnürt der ATMEGA dann ein Päckchen und versendet es via RS232. Wenn du aber auf einmal 32 Lichtschranken abfragen willst, gehen dir die Pins aus.
Detlev T. schrieb: > Samuel K. schrieb: >> Naja für die serielle Schnittstelle vom PC musst du sowieso >> programmieren lernen. Allerdings würde ich dann nicht mit VB anfangen > lesen. das programm steht schon. deswegen reden wir hier auch alle von > basic. Sorry hab ich überlesen.
Hallo Ich arbeite zurzeit mit 24 parallelen Versuchen. Mehr sind immer besser. Daher fand ich die Idee mit den einzelnen Counter-ICs gut. Die haben die Kapazität, eine Minute nicht abgefragt werden zu müssen. Was in Datenübertragung ja ein astronomischer Wert ist. Ich könnte das System, denke ich, dann einfach erweitern. Wie schon richtig bemerkt, arbeite ich mit Basic, weil das seit 20 Jahren mache und die ganzen Sonderzeichen und Klammern von C befremdend finde. Meiner Meinung nach sollte die Maschine eine Sprache verstehen, die auch der Mensch spricht „FOR…NEXT“ klingt für mich einfach logisch. Und das bisschen mehr Tippen macht mir nichts. Meine Abneigung gegen über Assembler ich schon geäußert. Ich glaube auch die Frage, warum ich die serielle Schnittstelle benutzte ist einfach beantwortet: Sie ist einfach, langt für einen Prototypen völlig und kostet nix extra. Ich muss ja nicht nur die Elektronik zusammen basteln. Mich interessieren viel mehr Fragen wie: Linearität des ganzen Systems, Dauerstandfestigkeit (Verdunstung der Sperrflüssigkeit), Einfluss der Füllhöhe, Temperaturabhängigkeit, etc… Und eigentlich will ich wissen, was in meinem Reaktor passiert… Ich fasse mal zusammen: Ich werde wahrscheinlich nicht um einen Mikrocontroller und die Anschaffung eines Brenners für die kleinen schwarzen Käfer herumkommen. Ist immer noch günstiger als die PCI-Karte. Und langfristig flexibler, aber auch Zeit intensiver und Zeit tickt... Da Hardware für mich Neuland ist, muss erstmal sondieren, was es gibt. Ich danke für alle Beiträge. Dominik
Das ist bei mir gerade anderstdrum: Ich finde C logisch und das Primitive Basic verwirrend. Aber das kommt wahrscheinlich davon, dass ich mit Sprachen wie c angefangen hab bevor ich überhaupt programmieren konnte.
Dominik R. schrieb: > Ich arbeite zurzeit mit 24 parallelen Versuchen. Nochmal um die Anforderungen zu verstehen: Ist es wichtig, welche Lichtschranke auslöst, oder können die Lichtschranken parallel geschaltet werden, um insgesamt einen Zähler zu takten?
Wenn du dich hier mit µC für das Problem beschäftigen willst, dann sieh dir mal den TMS 470 von TI an . Ist ein ARM7 TDMI chip. Ist zwar nicht so ganz der µC typ der hier im Forum favorisiert wird, ich denke aber für deine Anforderungen besser geeignet. The TMS 470 hat ein Modul das sich HET( HighEndTimer) nennt. Dieses Modul kann je nach µC Variante bis zu 32 IO Kanäle als separate Timer , Counter oder auch PWM Pins betreiben. Und das mit einer Auflösung < 5 µsec für jeden Pin. Zu Verbindung mit dem PC kannst du die vorhandene Uart nutzen.
Hi Nachdem ich die Antworten kurz überflogen habe, kann ich dir auch nur einen Cntroller vorschlagen. Das Pollinboard bringt eigentlich alles mit, was du brauchst und du kannst die Platine für deinen Versuchsaufbau gleich einbeziehen. Kosten zwischen 15 und 22 €. Die Atmegas (min. 3-5 ) kannst du dort auch bekommen Ca, 1,50 €/Stk und Software gibt's im Netz. Mit einer Eingabematrix kannst du locker 24 Eingänge verarbeiten. RS 232 ist auf Atmega 8 bereits drauf, muß nur versorgt werden. Infos gibt's hier in den Tutorials, danach hab ich auch gelernt. Ich denke, der Aufwand hält sich in Grenzen Gruß oldmax
Detlev T. schrieb: > Wenn du aber auf einmal 32 Lichtschranken abfragen willst, gehen dir die > Pins aus. Da hast du recht. Das sollte man von Anfang an berücksichtigen. Bleibt es bei den 24, oder können das auch irgendwann einmal 100 werden? (Nur um jetzt mal eine große Zahl zu nennen). Gegen das Pin-Dilemma gibt es einen einfachen Ausweg: Schieberegister als I/O Erweiterung. Das Ganze könnte man als Basis-Modul mit ansteckbaren Erweiterungen konzipieren, wobei man mit jeder Erweiterung zuätzlich weitere 8 Eingänge für Lichtschranken erhält. Hardwaremässig ist das nicht der große Aufwand und softwaremässig ist es auch kein Thema. Ist die Anzahl der Lichtschranken aber fix, dann ist so ein erweiterbarer Aufbau zweifellos Overkill.
Hallo Karl Heinz, es ist doch komisch, dass immer noch gilt: Wer die Frage nicht kennt, findet auch keine passende Antwort. :D Bei den heutigen Preisen könnte es sogar sinnvoll sein, an jede Lichtschranke einen ATTINY fürn € o.ä. zu packen und mit einem Bus zu verbinden. Vielleicht auch als Ring. Der Master schickt ein leeres Paket los, jeder Kontroller hängt seine Daten an und am Ende landet alles wieder beim Master. Ideen gibt es immer. Gruß, DetlevT
Hallo Detlev endlich jemand der mich versteht. Ich weiß nicht genau was ein ATTINY ist. Aber der PIC10200 kostet 0,5€!! Die Dinger Zählen lassen und ab und zu den Wert abfragen, Zähler nullen und von vorne. Ich glaube man könnte so auch hundert hinter einander schalten. Sie müssen ja nur einmal die Minute abgefragt werden. Es gibt auch fertige Counter ICs aus der 40xx Reihe die kosten ebenfals unter 1€, haben jedoch eine parallel Schnittstelle. Das Draht-Gefummel ist damit einfach zu komplizert. Mein Favorit wäre immer noch ein kleiner 8 Pin IC mit einem Pin der Zählt einem zum Reseten und drei für den Datentransfer. (Nächstes Byte, Nächste Bit, Data). Davon 24+x an die 4021 Parallel-Serielwandler (0,9€ für 7 Eingänge + 1 für den Übertrag) und ich bin ohne groß Hirnschmalz in Registern etc. zu verlieren bei einer flexiblen und günstigen Lösung. Gruß Dominik
Hallo nochmals Danke für die Unterstützung. Letztendlich habe ich mir ein Pollin Board besorgt. Das ist zwar etwas unwillig aber billig. Auch die Idee mit dem Ringbus habe ich bei Seite geschoben und mich für die schnell umsetzbare Methode des Pin abfragens an einem ATMEGA32 entschieden. Das Tutorial "kleiner_bascom_avr_kurs" ist Idioten sicher. Nach dem ich Stunden mit Ponyprog und Internetforen durchkämmen verbracht habe nur um festzustellen das mein Kabel zu lang war, blinkern die kleinen Lämpchen und ich strahle wie ein Honigkuchenpferd. Zum meinem Problem: Wie schließe ich eigentlich einen Fototransitor (siehe unten) an den ATMEGA32 an? So wie auf dem Bild? Muss ich dann die internen PullUp Widerstände anschalten? Datenblatt des Fototransistors: http://www.produktinfo.conrad.com/datenblaetter/150000-174999/156408-da-01-en-IR_PHOTOTRANSISTOR_PT331C.pdf Gruß Dominik
Dominik R. schrieb: > Nach dem ich Stunden mit Ponyprog und Internetforen durchkämmen > verbracht habe nur um festzustellen das mein Kabel zu lang war, blinkern ein Klassiker =) > die kleinen Lämpchen und ich strahle wie ein Honigkuchenpferd. Gratuliere! Freut mich. > Wie schließe ich eigentlich einen Fototransitor (siehe unten) an den > ATMEGA32 an? So wie auf dem Bild? Muss ich dann die internen PullUp Fast. Häng den AVR-Eigang unter die LED, damit der sicher vom Phototransistor auf GND gezogen wird und nicht irgendwo bei der Vorwärtsspannung der LED schwebt. Die Pegel, an denen ein Portpin als high oder low erkannt wird, stehen im Datenblatt unter Electrical Characteristics. Es empfiehlt sich, diese einzuhalten und mit einem Multimeter zu kontrollieren. > Widerstände anschalten? Nein, brauchst du nicht. Was hat denn dein Vorwiderstand für einen Wert?
Hallo, meine Kenntnisse in Elektrotechnik sind nicht die besten: Ich würde mit einem Poti hoch anfangen bei 100kOhm oder so und dann langsam runter drehen bis, die LED leuchtet und der Pin auf den Spannungswechsel reagiert. Den Widerstand messen und etwas vergleichbares +- 10% einbauen. Wenn ich die LED unter den AVR schalte. Dann blinkt sie aber nicht mehr wenn der Transitor ausgelöst wird, oder?. Sie dient als optische Kontrolle und sollte wenn möglich blinken wenn sich eine Bläschen sich ablöst. Ist aber am Ende auch nur Mäusekino. Kann man auch weg lassen. Gruß Dominik
Dominik R. schrieb: > Ich würde mit einem Poti hoch anfangen bei 100kOhm oder so und dann > langsam runter drehen bis, die LED leuchtet und der Pin auf den > Spannungswechsel reagiert. Den Widerstand messen und etwas > vergleichbares +- 10% einbauen. Ja, guter Ansatz. Aber auf alle Fälle noch validieren, dass sich die vorkommenden Größen innerhalb der in den jeweiligen Datenblättern aufgeführten zulässigen Grenzen bewegen. Das sind v.a. Kollektorstrom im Phototransistor, Verlustleistung am Phototransistor (Kollektor-Emitterspannung auf Kollektorstrom) und high-/low-Pegel des AVR-Portpins. Nachdem die Energiedichte, die am Phototransistor ankommt, nicht mit der einer direkten Bestrahlung vergleichbar sein wird und der maximale Kollektorstrom damit sehr niedrig ausfallen wird, würde ich dir entweder empfehlen, eine zusätzliche Transistorverstärkerstufe einzuplanen, oder aber die LED wegzulassen. http://vorlon.case.edu/~flm/eecs245/Datasheets/Sharp%20photodevices.pdf Figure 11 zum Beispiel für ersteren, Figure 9 für zweiteren Fall. > Wenn ich die LED unter den AVR schalte. Dann blinkt sie aber nicht mehr > wenn der Transitor ausgelöst wird, oder?. Sie dient als optische Doch, sicher. Der Portpin des AVR ist als Eingang so hochohmig, dass du seinen Einfluss bei den vorkommenden Bauteilen völlig ignorieren kannst.
Hallo, ein Problem jagt das nächste. Der Fototransistor ist, wie kurz zuvor (15.08.2010 02:01 siehe oben) beschrieben, an PORTA.2 angeschlossen. Die Idee mit der LED war quatsch, sie leuchtet nicht, blinkt also auch nicht. Für den Widerstand hat sich ein Wert von 10 MOhm ergeben. Ist die Lichtschranke offen, liegen etwa 50 mV an. Ist sie zu, so sind es 3.5 V. Mein Programm auf dem Chip (Atmega 32) funktioniert prinzipiell so: 10 Port kopieren 20 Kopie mit Temp. vergleichen 30 Wenn sie nicht identisch sind dann sende alle Ports an den PC 40 Kopie als Temp setzen. 50 nächsten Port 60 GOTO 10 (um C++ler jetzt richtig zu schocken...) Am PC wartet ein Programm, das den Com-Port Buffer ausliest und die Ports in binärer Form listet. Die Pins werden vom Pollin-Eval-Board über ein 40-Pol-Flachbandkabel, zu einem Steckbrett geführt. Dort ist erstmal eine Lichtschranke aufgebaut. Wenn ich jetzt mein Stückchen Pappe durch die Lichtschranke schiebe, bekomme ich folgende Ausgabe: ist: Port A B C Pin 76543210 76543210 76543210 ---------------------------------- 1 10011111:00000000:11000010: 2 10011011:00000000:11000010: 3 10010011:00000000:11000010: 4 10000011:00000000:11000010: 5 10000010:00000000:11000010: 6 10000110:00000000:11000010: 7 10000111:00000000:11000010: 8 10001111:00000000:11000010: 9 10000111:00000000:11000010: ---------------------------------- soll: Port A B C Pin 76543210 76543210 76543210 ---------------------------------- 1 00000100:00000000:00000000 'Und es sollte so aussehen. 2 00000000:00000000:00000000 'Der Fototransitor ist an PORTA.2 ---------------------------------- 'Angeschlossen Wird der Transistor an einen anderen Pin geschlossen dann sieht es ähnlich aus. Folgendes habe ich schon probiert: Kondensator parallel zu dem Fototransistor (1nF,3.3nF,1000nF mehr gibt meine Bastelkiste nicht her). Je nach Größe wird die Reaktion auf mein Pappengewedel langsamer und es sind ein paar Pinwechsel weniger. Die Daten oben wurden mit 1000nF aufgezeichnet. Die Auswertung der Pins mit DEBOUNCE. Es wird nur noch ein Spannungswechsel angezeigt (DEBOUNCE unterscheidet zwischen auf und absteigender Flanke), meine Routine nicht. Aber das Problem mit den Kuddelmuddel zwischen den Pins besteht weiter. Und es wird sehr langsam. Die UART-Schnittstelle funktioniert sicher. Ich lasse mir am Beginn des Programms die Werte 255,127,63...2,1 ausgeben und die kommen auch so an. Gruß Dominik
Oh... Hat sich erledigt nach Studium des Datanblattes und dem kleinen Bascom-Kurs: Am Port A liegen die AD-Wandler. Mit einem Kondensator (100nF) AREF auf GND werden sie entstört. Ciao
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.