- 12V Akku mit 280 Ah bauen         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 16 von 16

Thema: Ansprechen der Eingangports

  1. #11
    Neuer Benutzer Öfters hier
    Registriert seit
    26.10.2005
    Ort
    BaWue
    Beiträge
    13
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Ok.. danke

    Pullupwiderstände das stand ja schon im Datenblatt aber was ist das genau und was kann ich damit wie machen. Da bin ich nicht so richtig schlau draus geworden.

    Was meinst du mit offener Pin und externe Beschaltung?

  2. #12
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.07.2005
    Beiträge
    569
    Pullupwiderstände dienen dazu Eingänge auf definierte Pegel zu ziehen, wenn sie z.B. nicht beschaltet sind (offener Taster z.B.)


    Code:
                  +5V
                    o
                    |
                    o
            Widerstand
                    o
                    |
    PIN o-----------------o Taster o-----------o Masse
    Anmerkung zur Skizze:

    Fall 1 - Taster nicht gedrückt:
    Am Pin liegen nahezu 5 Volt an, da der Widerstand und der geöffnete Taster einen Spannungsteiler geben und der Widerstand des offenen Tasters gegen unendlich geht.

    Fall 2 - Taster gedrückt:
    Am Pin liegt Massepotential an, da in diesem Fall die gesammte Spannung uber den Widerstand des gedachten Spannungsteilers abfallen. (geschlossener Taster = annähernd 0 Ohm).

    Diese können bei den ATMEGA Mikrocontrollern intern aktiviert werden,DDR -> 0 & PORT -> 1 von dem entsprechendem PIN.
    Ach ja, die internen Pullups funktionieren natürlich nur, wenn der entsprechende Pin als Eingang definiert wurde ... (siehe Datenblatt).

    Offener PIN = z.B. nicht beschalteter PIN
    externe Beschaltung = alles was um den Atmega oder den entsprechenden Baustein sonst noch an Bauelementen plaziert ist (z.B. Widerstände, Kondensatoren, LED's etc ...)





    Ich hoffe dir damit ein wenig weiter geholfen zu haben.

    Grüße,

    da Hanni.

  3. #13
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    02.11.2005
    Ort
    Bayern
    Alter
    55
    Beiträge
    310
    Hallo it03,
    wo genau schließt du das Signal an direkt?
    * an den Eingangsports 1 - 8
    * direkt am Controller(z.B RNB-Bus)
    Falls du die Eingangsports 1 - 8 verwendest, mußt du die ganze Abfrage über I2C machen. Da die Eingänge nicht direkt am Controller sondern am PCF2 hängen.
    Code:
    'Testprogramm 6
    'für
    'RoboterNetz Standard-Roboter Board RBNFRA 1.2
    '
    'Aufgabe:
    'Testet Eingangsport indem Wert über RS232
    'übermittelt wird (9600 Baud einstellen)
    '
    'Autor: Frank
    'Weitere Beispiele und Beschreibung der Hardware
    'unter http://www.Roboternetz.de
    '###################################################
    Const Writeeingabeport_adr = &H7E 'I2C Adr PCF 2
    Const Readeingabeport_adr = &H7F 'I2C Adr PCF 2
    Dim I2cdaten As Byte 'Datenbyte aus PCF8574
    Dim I As Byte
    $baud = 9600
    $crystal = 8000000 'Quarzfrequenz
    Config Scl = Portc.0 'Ports fuer IIC-Bus
    Config Sda = Portc.1
    Portd.6 = 0 'Schrittmotoren erst mal ausschalten
    I2cinit
    '******** Diese 4 Befehle sind nur ab RNBFRA Version 1.2 (nicht in V 1.1)
    ' notwendig und bzw. möglich (erweiterte Energiesparfunktion und LED´s)
    ' Bei Board 1.1 bitte auskommentieren oder löschen
    I2cstart
    I2cwbyte &H74 'Schreibbefehl an PCF3 schicken
    ' Led´s ein ,Motorendstufen ein, Port-Peripherie ein, RBN-Bus Sleep Modus aus (also Peripherie
    aktiv)
    I2cwbyte &B00000010 'Datenbyte an PCF3
    I2cstop
    '*********
    I = 0
    I2cdaten = 1
    Do
    I2cstart
    I2cwbyte Readeingabeport_adr 'Lesebefehl an PCF schicken
    I2crbyte I2cdaten , Nack 'Datenbyte von PCF lesen
    I2cstop
    Waitms 50
    Print I ; " Eingangsport Wert" ; I2cdaten
    Incr I
    Loop
    End
    An den PCF hast du kein PinA oder PortA.
    Wenn alle Eingänge offen sind hast du den
    Wert 255 / &B11111111
    Je nach dem welche Eingang du gegen Masse ziehst ändert sich z.B. der
    Wert 254 / &B11111110
    Eine 1 bedeutet offener Eingang (5V) eine 0 geschaltet auf Masse (0V).
    Wenn du mit 5V -Signale arbeitest(also auf 1 schalten willst), müßtest du mit 10k Pulldown-Widerstände die Eingänge auf Masse ziehen. Geht aber nur mit externer Beschaltung. Dann würdest du anstatt 255(&B1111111 - 0(&B00000000) als offenen Eingang haben.

    Eine weitere Möglichkeit wäre dann noch die direkte Beschaltung am Controller (z.B. am RNB-Bus). Da wäre dann ein direktes Abfragen der beschalteten Pins möglich.

    ### Silvio ###

  4. #14
    Erfahrener Benutzer Roboter Genie Avatar von darwin.nuernberg
    Registriert seit
    08.08.2004
    Ort
    A, A
    Alter
    60
    Beiträge
    1.305
    Blog-Einträge
    1
    I2C und PCF waren genau diee Stichworte welche gefehlt hatten.


    Um den PCF8574 als Eingang zu verwenden muss folgendes geschehen:

    Die Pins, welche als Eingang funktionieren sollen müssen zunächst mit einem Komando auf Hi gesetzt werden.
    Der PCF kann dann feststellen ob dieser Pin auf LOW gezogen wird, sonst klappt das nicht.


    Also erst mal einen Befehl senden, welcher den Port auf HI setzt:
    dann Abfragen und nachsehen welcher Pin Low ist.
    Code:
    I2csend _adr , &B10000001 ' den PCF8574 stellen 1. und letzter Bit
    Diese Art nennt man dann open Drain

    Wenn man jetzt den PCF abfragt, erhält man den Wert 128.
    Wird das Bit 7 gegen Masse geschaltet erhält man den Wert 1 (da ja nur Bit0 Hi ist),
    Wird das Bit 1 gegen masse geschaltet erhält man den Wert 127 (da ja Nur Bit7 Hi ist),
    und wenn beide ggen Masse geschaltet werden erhätman was? Ja "0".


    Du erhält immer den Status des gesamten Bausteines,

    Willst Du nur bestimmte Pins afragen, ohne die anderen berücksichtigen must Du vorher mit einer AND entsprechend Maskieren.
    Du Willst also z.B. nur die unteren vier Bit abfragen Maskiest Du mit
    &B0000111 AND Port_var (In Port_var ist das Ergebnis deiner Protabfrage gespeichert)

    Das ganze ist in meiner Dokumentation zu meinem ProtobedApplication Board schön imBeispielcode erklärt und daher will ich es jetzt nicht nochmal schreiben.

    https://www.roboternetz.de/phpBB2/ze...rag.php?t=5601



    Zum Anschluss eines DFÜ-Gerätes (Funkmoden oder sonstigem) ist das natürlich nicht praktikabel, da zu langsam.
    Aber um z.B. Taster abzufragen ist es sehr Portsparend.

    Lies Dir meine Anleitung einfach mal durch.
    Gruss
    Darwin (meine Projekte sind auf meiner Pinnwand zu finden)

  5. #15
    Neuer Benutzer Öfters hier
    Registriert seit
    26.10.2005
    Ort
    BaWue
    Beiträge
    13
    Oh danke, danke für die vielen (nützlichen) Infos!

    Aber eine Sache ist noch nicht beantwortet oder ich habe es nicht rauslesen können:
    Gibt es eine Möglichkeit die 8 Eingangspins so zu schalten das sie permanent auf LOW sind (0V) und erst durch anlegen einer Spannung (von ausserhalb) auf High gesetzt werden?
    Weil ich verstehe den Sinn nicht ganz das man denn Zustand des Pins durch anlegen einer Masse ändert. Ich denke mal das es doch üblicher ist das ein externes Gerät ein Signal schickt das man dann abfragen kann.

    Gruß
    it03

  6. #16
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    02.11.2005
    Ort
    Bayern
    Alter
    55
    Beiträge
    310
    Hallo it03,
    mit Anlegen eines Widerstandes am Pin auf Masse oder Versorgungsspannung setzt du den Pin auf ein bestimmtes Potential 0V oder 5V (LOW oder HI) wenn du den Pin dann mit deinem Programm abfragst bekommst du die entsprechende Werte zurück.
    Wenn du nun einen Eingang mit Hi - Potential hast, kannst du beispilesweise mit einem Taster auf Masse, diesen auf LOW schalten.
    Oder umgekehrt ein Eingang mit LOW - Potential mit einem Taster auf HI schalten. Je nach Anforderung...
    Wenn nun dein externes Gerät im Aktionsfall ein Signal schickt mit Flanke auf HI sollte dein Eingang dies auch bemerken. Also sollte der Eingang auf LOW sein, so das das HI -Signal des externen Gerätes das LOW am Eingang zu einem HI schaltet und du es auswerten oder verarbeiten kannst.

    Simple ausgedrück:
    Du kannst keine Lampe einschalten, die schon leuchtet... aber ausschalten
    eine Lampe die nicht leuchet kannst du auch nicht ausschalten... aber einschalten.
    Es geht also darum, das du die richtigen Zustände abfragen kannst.
    ### Silvio ###

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress