Impulszählung

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • Impulszählung

      New

      Hallo liebe BASCOM Gemeinde.
      Ich habe ein "größeres" Projekt vor und bräuchte da mal einen Gedanken Anstoß. Ich bekomme von einer Maschine 100 verschiedene Impulse und möchte diese in einer mysql Datenbank erfassen und über eine Website auswerten.
      pro Sensor kommen max 3imp/s mit einer Impuls Dauer von ca. 30ms. Nun habe ich mir überlegt jeden Eingang auf einem eigenem ATtiny zu zählen, diese über I2Cvon einem ATmega oder Arduino abfragen zu lassen und die Ergebnisse mittels LAN-Schnittstelle in die MySQL Datenbank zu schreiben. Denke ich zu kompliziert?Oder hat jemand von euch eine sinnvollere Idee? Die Maßgabe besteht darin, dass keine Impulse verloren gehen dürfen. Echtzeiterfassung ist jedoch nicht wirklich wichtig. Ich hoffe ich habe das ganze halbwegs gut erklärt.
    • New

      Hallo,
      meinst du nicht, dass es bei so langsamen Impulsen einfacher wäre, möglichst viele Eingänge mit einem dicken Controller zu verarbeiten, anstelle der Kommunikation zwischen sehr vielen Controllern?
      Sehr viele Pins (ganze Ports) abfragen geht mit wenigen Takten, während die Kommunikation mit vielen Slaves wesentlich mehr Aufwand und damit Zeit beanspruchen wird.
      Just my two Cent.
    • New

      Hallo sputnik722000,

      in welcher Weise sind die Impulse denn verschieden ? Dauer Pegel Form ?
      kommen die wirklich von 100 Sensoren ?
      3 Impulse pro Sekunde und Sensor mit einer Dauer von 30ms sind ja beim ersten Augenschein kein Hexenwerk.
      Zur Verarbeitung bliebe da Zeit, welche du in einem Ablaufdiagramm mal darstellen solltest um einen roten Faden zu finden.

      Da aber keiner verlorengehen darf heißt das, der Zustand müßte in einem FF bzw. Counter; Schieberegister solange gespeichert bleiben, bis er von der Abfragesteuerung quittiert wird. So ein Monstrum habe ich vor Jahren mal für 255 Meßstellen mir RS Flipflops aufgebaut.

      Weiterleitung und Verarbeitung in einer Datenbank wird wohl der einfachere Part dieses Projekts sein.

      Gruß Rudi
      Immer Glück haben ist fast wie können..
    • New

      So, zuerst einmal vielen Dank für die prompten Antworten. Ich versuche mal alle Fragen zu beantworten.

      - Ja, ich habe 100 sensoren von der Maschine kommend. Die Impuslänge dauert ca. 30ms
      Franz hat warscheinlich Recht. Die Impulsdauer ist recht lang und die Häufigkeit gering. Es sollte möglich sein das ohne der verwendung von interrupts zu realisieren. in sofern kann ich alle eingänge des µc verwenden und mit i2c erweiterungen arbeiten. <Riedleweg> Ich würde dann eher den MCP23016 bevorzugen, denn der hat 16 bit
      - <Rudi> die Impulse sind Rechtecksignale mit einem 12V Pegel, haben einen eine Dauer von ca.30ms und max 3 Impulse pro Sekunde. Die Datenbank und die dazugehörende Website habe ich schon erstellt.

      Ich bin halbwegs vertraut mit BASCOM und traue mir die abfragerei eigentlich zu. Hat jemand von euch erfahrung mit dem ENC28J60 Modul ? Ist das teil schwer an dem AVR einnzubinden? Hab damit noch nie etwas versucht. Für den Arduino gibt`s da eine Bibliothek. Für Bascom aber scheinbar noch nicht.

      The post was edited 1 time, last by sputnik722000 ().

    • New

      sputnik722000 wrote:

      100 sensoren von der Maschine kommend. Die Impuslänge dauert ca. 30ms
      mit I2C sportlich, aber machbar.
      Beispiel PCF8574
      Eine Abfrage bei I2C und 100kHz kostet 18 Takte bei 100kHz, also 0,18ms.
      Wenn dabei gleich 8 Sensoren abgefragt werden konnen, brauchst du 13 Portexpander für 100 Sensoren.
      Macht 2,34 ms Abfragezeit, also etwa 12 mal pro 30 ms.
      Ich würde hier einen SPI-Chip bevorzugen ;)

      sputnik722000 wrote:

      erfahrung mit dem ENC28J60 Modul ? Ist das teil schwer an dem AVR einnzubinden?

      ja, ist es.
      Mein Rat: Vergiss das Modul. Du hast bei 27ms "Pause" nicht die Zeit, um dich um den ganzen TCP/IP Stack zu kümmern

      sputnik722000 wrote:

      Für den Arduino gibt`s da eine Bibliothek. Für Bascom aber scheinbar noch nicht.
      Six1 hat Susi bereitgestellt
      SUSI, ein großer Baukasten
    • New

      Michael wrote:

      Wenn dabei gleich 8 Sensoren abgefragt werden konnen, brauchst du 13 Portexpander für 100 Sensoren.
      Mit dem PCF8574 können nur 8 x 8 Eingänge abgefragt werden, für weitere 36 (64) Eingänge benötigst Du den PCF8574 A mit anderer Basisadresse. Eventuell hilfreich ist hierbei die Interuptfunktion, über die der PCF eine Pegeländerung meldet. Es gibt auch noch die Möglichkeit mit der I²C- Erweiterung von BASCOM (kostenpflichtig) einen beliebigen Controller (ATMEGA / ATtiny) in einen I²C- Chip umzuwandeln. Den könnte man dann auch etwas "intelligent" programmieren, sodass er beispielsweise Datenpakete sendet oder aber auch als Zwischenspeicher arbeitet oder schon eine Vorauswertung vornimmt, falls das möglich ist.
      Wenn das die Lösung ist, möchte ich mein Problem wieder haben.
    • New

      Er wollte ja die 16-Bit Portexpander nehmen.
      Davon lassen sich bis zu 8 adressieren. Mit 7 Stück käme man auch ins Ziel und könnte die 100 Eingänge abdecken.

      Ich habe das auch mal gerechnen. Wenn man die Portexpander pollen will braucht es einiges an Zeit. In den Zwischenzeiten die Netzwerksache zu erledigen halte ich auch für vermutlich nicht möglich.
      Man könnte aber als Vorschlag 2 Controller nehmen. Der eine Pollt diese Eingänge und sammelt die Zähldaten.
      Der 2. Bedient den NET-Baustein und fragt bei Bedarf den anderen Controller nach den Zählerwerten ab.

      Eine andere Variante wäre, auf Interrupts der Portexpander zu reagieren, so wie es @ceperiga bereits erwähnt hat. Die Prozessorauslasung wäre dann deutlich geringer als beim Pollen.
      Aber diese Interrupts könnten trotzdem mit den Netzwerk Probleme aufwerfen, Das müsste man ausprobieren.
    • New

      Ach ja.
      Man könnte auch einen Controller nehmen, der diese 100 Pins hat. Der macht die Abfragen der Sensoren. Der ist dann bia SPI mit einem 2. Controller verbunder, der mit Netzbausteun hantiert und bei Bedarf den großen Controller um die Zählerdaten bittet. Dann braucht es die hanze serielle I2c-Bus Expanderei nicht. Das sollte deutlich schneller sein.
    • New

      Na dann nehmt doch pcf 8575 oder mcp23016 ( der hat auch ne spi schwester ) die sind 16 bit, kommt man dann mit 7 stück hin.
      Eventuell könnte man auch nen Tastatur matrix /Led controller ala ht16k33 missbrauchen, der hat auch Latching inputs, heisst die eingangsbits bleiben stehen bis er ausgelesen wurden. Nur müsste das ja dann eher Potentialfrei eingeschleust werden.

      Tobias
    • New

      Das Forum hier macht echt spass. Vielen Dank für eure rege Beteiligung bei diesem Thema. Geht doch mal ganz offen an das Thema rann. Wie würdet ihr das lösen? Ich bin nicht mit dem AVR verheiratet. Ich habe auch schonmal darüber nachgedacht einen Raspberry Pi zu nehmen um die Daten dann auf den MySQL Server zu schieben. Nur habe ich damit so gar keine Erfahrung.
      Ich könnte doch die i2c erweiterungen auch direkt am Pi anschließen!? Ist das dann mit dem timing vom impulse zählen und sql gedöns besser?
      Aber eigentlich habe ich alles hier um Versuche zu starten.

      Also meine Werkstatt gibt aktuell folgendes her:
      Raspberry Pi 2+
      Atmega 16
      Atmega 32
      Atmega 8 / 48 / 88
      Attiny 13
      Attiny 44

      MCP23016
      .....ich merke gerade ich hab ein Sammelproblem :whistling:

      Alles andere müsste bestellt werden. Ist aber auch kein Problem
    • New

      Die Frage ist ja auch, was mit den Daten passieren soll... muss auf diese in einem festgelegten Zeitfenster reagiert werden, oder geht es ums reine Monitoring... davon hängt es ja ab, ob man Daten sammeln kann und als Bulk übertragen, oder ob zeitkritisch auf bestimmte Zustände irgendwelche Reaktionen folgen sollen...
    • New

      Mitch64 wrote:

      Ach ja.
      Man könnte auch einen Controller nehmen, der diese 100 Pins hat. Der macht die Abfragen der Sensoren. Der ist dann bia SPI mit einem 2. Controller verbunder, der mit Netzbausteun hantiert und bei Bedarf den großen Controller um die Zählerdaten bittet. Dann braucht es die hanze serielle I2c-Bus Expanderei nicht. Das sollte deutlich schneller sein.
      An welchen Controller dachtest Du da?
    • New

      Stemmy wrote:

      Die Frage ist ja auch, was mit den Daten passieren soll... muss auf diese in einem festgelegten Zeitfenster reagiert werden, oder geht es ums reine Monitoring... davon hängt es ja ab, ob man Daten sammeln kann und als Bulk übertragen, oder ob zeitkritisch auf bestimmte Zustände irgendwelche Reaktionen folgen sollen...
      Das hatte ich ja schon im ersten Thread geschrieben. Es ist nicht zeitkritisch. Ich muss nur nachvollziehen können was in der letzten Stunde passiert ist. Oder in den letzten Tagen etc. Also eine übertragung alle paar Sekunden ist überhaupt kein Problem.
    • New

      Dann bieten sich bei der Erfassung sog. vertikale Zähler an, der auf Bitbreite des ganzen Ports (Byte bzw Word) mit kaskadierten Bytes bzw. Words, simultan zählen... geht auch per Bitmanipulation ohne bedingte Sprünge.... bei acht vertikalen Stufen(255 Bit) hat man bei 3 Imp/s schon 85 s Zeit zum sammeln... der Traffic für die Übermittlung ist dann Peanuts... 13x8 Bytes Übertragen pro 85s... ;)