-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: AD Port richtig anschliessen

  1. #1
    zwanzischmark
    Gast

    AD Port richtig anschliessen

    Anzeige

    ich hab jetz hier schon länger gesucht aber irgendwie nicht so wirklich gefunden wie ich einen AD Port richtig anschliesse. Testweise hab ich mal einfach einen taster wie unten auf dem Bild angeschlossen und mit WAIT abgefragt. Funktionieren tut das ganze, aber mir kommts komisch vor. Kann mir also mal jemand kurz sagen ob die schaltung unten richtig ist, oder wie mans richtig anschliesst?
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken tst.gif  

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    ICh vertehe nicht ganz denn Sinn deiner Schaltung. Der AD-Wandler wird dir entweder 0 oder einen bestimmten Wert liefern, der Abhängig von der Referenz-Spannung ist. Nimm doch einfach einen Poti (5 oder 10 K) schließ ihn an MAsse, AD-Port, Vcc. Und dreh dann ein wenig rum.

    MFg Moritz

  3. #3
    zwanzischmark
    Gast
    es geht ja nicht um die schaltung... das ist nur ein beispiel was genau den zweck erfüllen soll den du genannt hast darum gehts ja nicht. Ich wollte ja einfach nur allgemein wissen ob das so richtig angeschlossen ist. Es geht einfach darum das ich meine Tastatur in dieser form angeschlossen hab. Habe nur das beispiel hierfür vereinfacht...

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.06.2004
    Ort
    Düsseldorf
    Alter
    33
    Beiträge
    158
    Hallo,

    mit einem Analogen Eingang kann man Spannungen messen (bei URef = 5V mit der C-Control Spannungen von 0V bis 5V mit einer Auflösung von 5V/255 = (etwa) 19,6 mV.

    Der Schaltplan da oben ist ein Spannungsteiler. Normalerweise schließt man an die Analogports Sensoren, z.B. Temperatursensoren, die in Abhängigkeit der Temperatur ihren Widerstand ändern. Mit dem Spannungsteiler kann man dann über den festen Widerstand oberhalb (manchmal auch unterhalb) des Sensors die am Sensor abfallende Spannung messen und darüber den Widerstand des Sensors. Mit Hilfe von Funktionen, Listen oder Graphen kann man dann die zugehörige Messgröße (z.B. Temperatur) zum Messwert ermitteln.

    Manche Tastaturen werden ebenfalls an einen AD Port angeschlossen. Dabei hat jede Taste einen eigenen Widerstand, somit lässt sich über den gemessenen Widerstand die gedrükte Taste ermitteln. Theoretisch sind so 255 Tastenerkennungen möglich, in der Praxis sollte man jedoch die Messungenauigkeiten etc. beachten.

    Gruß,

    Stefan
    http://www.tappertzhofen.eu/bpp2

    Basic++ Programmiersprache
    für den C-Control I Mikrocontroller

  5. #5
    zwanzischmark
    Gast
    vielen dank für die ausführliche Antwort. Ihr Übertrefft mit euren Antworten aber einfach meine Frage. Wollte ja einfach nur wissen ob die Schaltung so richtig ist oder nicht. Ein einfaches ja hätte also genügt. Manche von euch sind einfach zu übereifrig Ich habe einfach nur die Tastenerkennung selbst gebaut und nicht die vorlage wie z.B. beim aplicationboard genommen und wollte mich einfach nur vergewissern das ich nichts kaputt mache. Die tasteneingabe funktioniert ja fehlerlos, aber mir sahs so aus als wär in allen schaltungen die ich gesehen hab der AD-Port anders angesteuert. Das ganze ist für ein Projekt in dem ich mit der eingabe von Zahlen bis 24 die Beleuchtung für eine Bühne steuern kann. Also 24 Lampen an und aus. Desweiteren kann ich dann 10 beleuchtungseinstellungen abspeichern und laden...

    mfg Paul

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.06.2004
    Ort
    Düsseldorf
    Alter
    33
    Beiträge
    158
    Hallo,

    mehr als 5 V vertragen die AD Ports nicht. Bei 5 V wird der Wert 255 angezeigt. Wenn Du den Port gegen gemeinsame Masse schließt sollte 0 stehen. Bei mir steht aber immer was zwischen 5 und 10. Du solltest also die Fehlertoleranzen nochmal checken. Bei 24 möglichen Zustände könnte es noch klappen. An jedem Widerstand sollte dann jeweils ein vielfaches von 0,208 V abfallen.

    Einfacher und sicherer wäre es aber mit Digitalports. Mit einem PCF8574 kannst du die Ports über I²C Bus erweitern (auf wirklich viele Ports!). Ports ermöglichen dabei mehrere gedrückte Tasten abzufragen. Außerdem muss man bei Ports nichts mit Widerständen beachten (solange sie Eingänge sind und gegen Masse geschlossen werden).

    Gruß,

    Stefan
    http://www.tappertzhofen.eu/bpp2

    Basic++ Programmiersprache
    für den C-Control I Mikrocontroller

  7. #7
    zwanzischmark
    Gast
    habe eine Drucktastatur von Conrad mit 12 tasten das Funktioniert schon alles wunderbar mit dem AD-Port. Habe jetzt abstände von 10 bis 25 das sollte ja als sicherheit locker ausreichen. Den PCF8574 benutze ich auch schon 2mal um auf 24 Digitalports zu kommen und ein Display anzusteuern. Also ist eigentlich alles schon perfekt und funktioniert. Die sache mit dem höheren wert als 0 wenn nur masse Dran ist hatte ich auch bis ich gemerkt hab das mein widerstand einfach zu gross ist vor masse. Den hab ich jetzt auf 1,2k verkleinert und jetzt hab ich auch wirklich die 0

    meine frage war eigentlich überflüssig wollte nur sichergehen

    danke nochmal


    mfg Paul

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.06.2004
    Ort
    Düsseldorf
    Alter
    33
    Beiträge
    158
    tja ich habe da gar nix bei Masse und immernoch irgendwas über 5 in AD. Aber vermutlich habe ich mir bei meinen ganzen Tests die C-Control schon richtig kaputt gemacht. An der einen C-Control hingen mal 4 Amper dran (aber eine sehr kleine Spannung). Die lebt nicht mehr.

    Gruß,

    Stefan
    http://www.tappertzhofen.eu/bpp2

    Basic++ Programmiersprache
    für den C-Control I Mikrocontroller

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.01.2004
    Beiträge
    2.441
    @zwanzischmark
    vielen dank für die ausführliche Antwort. Ihr Übertrefft mit euren Antworten aber einfach meine Frage. Wollte ja einfach nur wissen ob die Schaltung so richtig ist oder nicht. Ein einfaches ja hätte also genügt. Manche von euch sind einfach zu übereifrig
    Wenn man das Schaltbild das du gepostet hast alleine ansieht, wird die Schaltung so wohl funktionieren, aber sehr sinnvoll ist die so meiner Meinung nach nicht.

    Wenn der Schalter offen ist, liegen 10k zwischen Port und Masse, dass ist keine besonders gute Ausgangslage um sauber den Wert 0 zu erfassen.

    Wenn der Schalter geschlossen ist, liegen wegen dem 10k Widerstand knapp 97% von Uref am Port an.
    D.h. je nach Schalterstellung liegen ungefähr 0V oder ungefähr Uref an. Diesen Messbereich kann man einfacher mit einem Digitalport erfassen.

    Ob diese Schaltung im Zusammenhang mit deinem Tastaturpad sinnvoll ist, hängt davon ab wie das Pad aufgebaut ist. Aber offensichtlich war der 10k Widerstand dafür auch nicht besonders geeignet sonst hättest du ihn ja nicht ausgetauscht.

  10. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.08.2004
    Ort
    Stuttgart
    Alter
    42
    Beiträge
    849
    Zitat Zitat von zwanzischmark
    habe eine Drucktastatur von Conrad mit 12 tasten das Funktioniert schon alles wunderbar mit dem AD-Port. Habe jetzt abstände von 10 bis 25 das sollte ja als sicherheit locker ausreichen. Den PCF8574 benutze ich auch schon 2mal um auf 24 Digitalports zu kommen und ein Display anzusteuern. Also ist eigentlich alles schon perfekt und funktioniert. Die sache mit dem höheren wert als 0 wenn nur masse Dran ist hatte ich auch bis ich gemerkt hab das mein widerstand einfach zu gross ist vor masse. Den hab ich jetzt auf 1,2k verkleinert und jetzt hab ich auch wirklich die 0

    meine frage war eigentlich überflüssig wollte nur sichergehen

    danke nochmal

    mfg Paul
    Hallo zwanzischmark,

    du musst aufpassen mit den Eingängen. Du hast deswegen mehr als 0 weil entweder deine Masse nicht sauber ist. Dann zieh eine Leitung direkt vom GND-Pin der CC zur Tastatur oder dem Widerstand. Das andere was ich auch einmal festgestellt hatte als ich diese Spannungsleiter aufgebaut hatte war das mit den der im Applikation-Board angegebenen Werten der Analog-Pin sehr sensibel reagiert auf Magnetische Störfelder. D.h. er reagiert wie eine Antenne. Du kannst dir deinen AD-Port zum einen schützen durch eine 5V1-Z-Diode mit Anode an AD-In und Kathode an GND und zum andern deine Hochfrequenz oder Netzfrequenz etwas eliminieren indem du einen 10nF - 68nF MKT-Kondensator (rotes Kästchen) noch dazu parallel schaltest. Dann wird die Antennenfunktion die ja nicht erwünscht ist etwas unterbunden und es kommt nicht zu unwillkürlichen Tasterbetätigungen. Kannst auch noch einen Test machen wie ich es getan habe. Ich habe die Schaltung euf meinen Scanner gelegt. Der produziert beim Scannen ein sehr hohes elektrisches Störfeld durch die Lampe. Wenn es da OK ist hast du schon Gewissheit das es auch recht sauber entstört ist nach aussen.

    Grüsse Wolfgnang

    Anbei noch einen Code den ich einmal geschrieben hatte für ein Projekt. Das kann die Taster in der Art auswerten. Das ist bisschne Code aus meinem Projekt herausgeschnippelt. Hab den speziell fr ein Projekt geschrieben und genau die Werte für die Spannungsleiter verwendet die auch im Schaltplan des Applikationn-Boards verwendet werden.

    Code:
    'Tastennummern definieren
    '------------------------
    Define KeyStern         11
    Define KeyKreuz         10
    Define Key1             1
    Define Key2             2
    Define Key3             3
    Define Key4             4
    Define Key5             5
    Define Key6             6
    Define Key7             7
    Define Key8             8
    Define Key9             9
    Define Key0             0
    Define KeyNone          99
    
    ...
    
    Define Tastatur       AD[1]        'Analog-Port der 10er-Tastatur
    ...
    
    #ResetSystem
      Betrieb = On
      GoSub LCDReset                                                   'Das LC-Display initialisieren im 4-Bit Modus
      GoSub PotReset                                                   'Digitales Potentiometer rücksetzen auf Minimum
      GoSub GetTastatur
      Buzzer = On
      If KeyNr = Key1 Then Buzzer = Off
      KeyLock = On
      If KeyNr = Key2 Then KeyLock = Off
      GoSub SignalTon3
      Sys LcdCmd LcdClear
      Pause 1
      VarTextNr = TxtVersion1
      Sys LcdCmd Z1S1
      GoSub LCDWriteText
      VarTextNr = TxtVersion2
      Sys LcdCmd Z2S1
      GoSub LCDWriteText
      Pause 80
      Sys LcdCmd LcdClear
      Pause 1
      'Hochlauf-Meldung
      For ii = TxtBootUp1 + 8 To TxtBootUp1 Step -1
        Sys LcdCmd Z1S5
        VarTextNr = ii
        GoSub LCDWriteText
        Pause 4
      Next ii
      For ii = TxtBootUp2 + 12 To TxtBootUp2 Step -1
        Sys LcdCmd Z2S3
        VarTextNr = ii
        GoSub LCDWriteText
        Pause 4
      Next ii
      Pause 200
      Sys PotGoPos 50
    
    #PasswortSchutz                                                    'Passwortschutz für das System
      If KeyLock = Off Then GoTo MenuAuswahl
      Sys LcdCmd LcdClear
      Pause 1
      Sys LcdCmd Z1S3
      VarTextNr = TxtPasswort
      GoSub LCDWriteText
      Sys LcdCmd Z2S5
      Sys LcdChar &H7E
      Sys LcdCmd Z2S12
      Sys LcdChar &H7F
      Stelle = 0
      GoSub SignalTon4
    
    #PasswortNextOK
      Stelle = Stelle + 1
    #PasswortNextOKWait1                                               'Auf Tastendruck warten
      If Tastatur < 245 Then GoTo PasswortNextOKWait1
    #PasswortNextOKWait2
      Sys LcdCmd Z2S5
      If Second Mod 2 = 0 Then Sys LcdChar &H7E Else Sys LcdChar &H20
      Sys LcdCmd Z2S12
      If Second Mod 2 = 0 Then Sys LcdChar &H7F Else Sys LcdChar &H20
      Pause 2
      If Tastatur > 245 Then GoTo PasswortNextOKWait2
      GoSub GetTastatur
      Sys LcdCmd Z2S6 + Stelle                                         'Sternchen auf Display ausgeben
      Sys LcdChar xSt
      LookTab TabPasswort, Stelle, TempByte                            'Pasworteingabe prüfen auf richtige Eingabe
      If Stelle <= 4 And KeyNr = KeyKreuz Then GoTo PasswortSchutzError
      If Stelle > 4 And KeyNr = KeyKreuz Then GoTo PasswortOK
      If KeyNr = KeyStern Then GoTo PasswortSchutz
      If Stelle <= 4 And KeyNr <> TempByte Then GoTo PasswortNextError
      If Stelle > 4 Then GoTo PasswortOK                               'Maximale Anzahl von Stellen erreicht
      If TempByte = KeyNr Then GoTo PasswortNextOK                     'Richtige Eingabe
      GoTo PasswortNextError                                           'Falsche Eingabe
    
    #PasswortNextError
      Stelle = Stelle + 1
    #PasswortNextErrorWait1                                            'Auf Tastendruck warten
      If Tastatur < 245 Then GoTo PasswortNextErrorWait1
    #PasswortNextErrorWait2
      Sys LcdCmd Z2S5
      If Second Mod 2 = 0 Then Sys LcdChar &H7E Else Sys LcdChar &H20
      Sys LcdCmd Z2S12
      If Second Mod 2 = 0 Then Sys LcdChar &H7F Else Sys LcdChar &H20
      Pause 2
      If Tastatur > 245 Then GoTo PasswortNextErrorWait2
      GoSub GetTastatur
      Sys LcdCmd Z2S6 + Stelle                                         'Sternchen auf Display ausgeben
      Sys LcdChar xSt
      If KeyNr = KeyKreuz Then GoTo PasswortSchutzError
      If KeyNr = KeyStern Then GoTo PasswortSchutz
      If Stelle <= 4 Then GoTo PasswortNextError
      If Stelle > 4 Then GoTo PasswortSchutzError                      'maximale Anzahl von Stellen erreicht
      GoTo PasswortNextError
    
    #PasswortSchutzError
      Sys LcdCmd LcdClear
      Pause 1
      Sys LcdCmd Z2S3
      VarTextNr = TxtPasswortErr
      GoSub LCDWriteText
      Sys LcdCmd Z1S1
      VarTextNr = TxtSperre
      GoSub LCDWriteText
      Second = 0
    #PasswortSchutzErrorWait
      TempByte = 20 - Second                                           'Count-Down für die System-Sperre
      Sys LcdCmd Z1S15
      GoSub LCDWriteCount8Bit
      Sys LcdChar x__
      If Second < 20 Then GoTo PasswortSchutzErrorWait
      GoTo PasswortSchutz
    
    #PasswortOK                                                        'Passwort wurde richtig eingegeben
      Sys LcdCmd Z2S1                                                  'Meldung anzeigen für richtige Eingabe des Passworts
      VarTextNr = TxtPasswortOK
      GoSub LCDWriteText
      Pause 100                                                        'Eine Sekunde warten
      Sys LcdCmd LcdClear
    
    #MenuAuswahl
      ProgrammNr = 1                                                   'Auf erstem Programm beginnen
    #MenuAuswahlNeu
      Sys LcdCmd Z1S1                                                  'Auswahlmenü anzeigen
      VarTextNr = TxtAuswahl
      GoSub LCDWriteText
    
    ...
    
    
    ' Tastatur einlesen:
    ' ------------------
    '   Die 10er-Tastatur einlesen und die gedrückte Taste decodieren als Zahlenwert
    '   in eine Variable die nach Rückkehr aus diesem Unterprogramm direkt ausgewertet
    '   werden kann. Ist keine gültige Taste gedrückt oder keine Taste gedrückt, wird
    '   der Wert 99 zurückgeliefert
    
    #WaitTastatur                                                      'Auf einen Tastendruck warten
      If Tastatur <= 245 Then GoTo WaitTastatur
    #WaitTastaturX
      If Tastatur > 245 Then GoTo WaitTastaturX
    
    #GetTastatur                                                       'Aktuell gedrückte Taste zurückliefern
      If Tastatur > 245 Then GoTo GetTastaturNoKey
      KeyNr = KeyNone
      For ii = 0 To 11                                                 'Eine Taste ist gedrückt
        LookTab TabKeyCodes, ii, TempByte                              'Tastencode ermitteln
        If Abs(Tastatur - TempByte) < 3 Then KeyNr = ii
      Next ii
      If KeyNr <> KeyNone Then GoSub SignalTon1                        'Signalton bei gültigem Tastendruck ausgeben
      Return
    
    #GetTastaturNoKey                                                  'Keine Taste gedrückt
      KeyNr = KeyNone
      Return
    
    ...
    
    'Tabelle mit den Tastaturwerten:
    '-------------------------------
    '  Die Mittelwerte der einzelnen Tasten mit einer Tolleranz von +/-3 Einheiten
    
    Table TabKeyCodes
     '0   1   2   3   4   5   6   7   8   9   #   *
      153 173 90  0   193 111 23  215 132 46  68  236
    TabEnd
    
    'Tabelle Potiwerte
    Table TabFreqPot
      '0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25
       100 100 100 100 95  91  86  82  77  73  68  64  59  55  50  45  41  36  32  27  23  18  14  9   5   0
    TabEnd
    
    'Tabelle für das Zugangs-Passwort
    Table TabPasswort
      4 Key0 Key0 Key0 Key7
    TabEnd

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •