Autor Beitrag
Gruenschnabel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 41

Windows 7, 10
Delphi6, Delphi7SEportable, Delphi 10 Berlin Starter
BeitragVerfasst: Fr 09.04.10 14:20 
Hallo Ihr!

Für ein Semi-privates Projekt stehe ich vor folgendem Problem;

Ich soll mind. 30 digitale Eingänge (24V DC) vom PC aus auswerten und via Delphi verarbeiten und ein wenig visuell darstellen.
Wie immer ist es das erste Mal, dass ich mich mit so einer Sache beschäftige, von daher fehlen mir im Moment noch verschiedene Ansätze. Deshalb frage ich einfach drauf los;

1. Wie kann ich die 30 Eingänge an den Rechner ankoppeln? Die 24V Sind kein Problem, die könnte ich "nach unten manipulieren", sofern notwendig. Ich hab da auf diversen Internetseiten USB-Interface gesehen, die nicht nur DI bieten, sondern auch AI, AO, DO. Doch das brauche ich alles nicht. Vorteil scheint bei denen aber zu sein, dass einige davon mit Delphi ansteuerbar wären (zumindest laut Angaben).

2. Wie kann ich dieses Interface mit Delphi abfragen? Gibt es da evtl schon fertige Lösungen?

Bin auch für völlig andere Herangehensweisen offen, da mir im Moment wegen der Ankopplung einige Fragezeichen im Kopf rumschwirren...

Vielen dank schonmal im voraus,

Gruenschnabel

_________________
Fährst Du rückwärts an den Baum, verkleinert sich dein Kofferraum!
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Fr 09.04.10 14:53 
Wenn Du wirklich nur eingänge brauchst, wäre IMHO ein Logic Analyzer für dich eine recht gute Wahl, auch wenn die in der Preisklasse ab 3-4-Stellig anfangen. Oder musst Du das "live" haben?

Beschreib ggf. dein Projekt mal etwas genauer.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Gruenschnabel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 41

Windows 7, 10
Delphi6, Delphi7SEportable, Delphi 10 Berlin Starter
BeitragVerfasst: Fr 09.04.10 15:02 
Hallo und Danke erstmal für deine Bemühungen.

Also, ein Kumpel ist an mich herangetreten, der in einem Kegelverein spielt. Dieser möchte zusätzlich zu den Anzeigen über den Bahnen einen Monitor aufstellen, auf dem die Ergebnisse angezeigt werden. Der Monitor wird über ne 2. GraKa gespeist. Nun kommen die Signale von der Anzeige in Digitaler Form. Also ein Bit für Kegel 1, zweites Bit für Kegel 2, ... usw. Hinzu kommen ein paar Meldelampen und sonstige Anzeigen. Das ganze mal 2 für zwei Bahnen. Ich wollte nun "irgendwie" die Signale auswerten um sie dann visuell darzustellen und schon nen Spielbericht "live" zu berechnen. Wie gesagt, um die Programmierung, bzw. um das visuelle mache ich mir weniger Sorgen. Mehr um die Anbindung.

Da ich sowas in der Richtung auch privat mal vorhatte (externe Signale mit Delphi), ist die ganze Sache natürlich ein positiver Nebeneffekt, dass ich damit endlich mal anfange :-)
Sollten Dir noch Infos fehlen, nur zu!


Danke,

Gruenschnabel

_________________
Fährst Du rückwärts an den Baum, verkleinert sich dein Kofferraum!
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Fr 09.04.10 15:11 
Okay, dann wäre ein Logic Analyzer etwas overkill ;-) Je nachdem, ob Du etwas Erfahrung mit Elektronik hast, bzw. jemanden kennst, der Dir dabei helfen kann, dürfte in dem Falle aber auch ein Mikrocontroller reichen, der die Signale von den Pins entgegen nimmt, vorverarbeitet und dann an den Computer weiterreicht. Günstige Controller für deine Aufgabe dürftest Du bereits für ~10 Euro bekommen (Atmel ATmega128 dürfte hier reichen, gibt aber auch zahlreiche andre; du brauchst einen mit möglichst vielen GPIO) zzgl. paar Kleinteile und einem Controller-Chip für RS232<->USB (FTD232 hießén die Teile glaube; gibt's sowohl für 5 wie auch für 12 V, wobei 5V hier vollkommen ausreichen und weniger Aufwand auf der Platine machen).

Ansprechen würdest Du deine Hardware-Komponente dann ganz normal über einen virtuellen COM-Port\serielle Schnittstelle. Von dem USB braucht deine Anwendung nix wissen.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Tropby
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 71
Erhaltene Danke: 4

Vista, Win XP, Win 89
Turbo Delphi Ex.
BeitragVerfasst: Fr 09.04.10 15:21 
Vielleicht könntest du das ganze hiermit umsetzten:

www.pollin.de/shop/d...aluations_Board.html

Ich selber habe das Board schon öffters erfolgreich eingesetzt und muss sagen, dass ich bis jetzt nichts billigeres gefunden habe.

Auf dem Board hast du dann 32 Inputs bzw. Outputs die du verwalten kannst. Die kommen alle bei dem "IDE" Stecker an. Zwei von denen brauchst du aber dann schon für die Serielle Schnittstelle. Dort kannst auch noch nen RS232 <-> USB Wandler einsetzten.

Der einzige Harken ist: Du musst dich mit Mikrocontrollern auseinandersetzten.

Edit:
Die Informationen basieren auf der Annahme, dass du einen ATMega32 nimmst.

_________________
Tropby
Gruenschnabel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 41

Windows 7, 10
Delphi6, Delphi7SEportable, Delphi 10 Berlin Starter
BeitragVerfasst: Fr 09.04.10 20:24 
Tja also ich hab so ein Board schon und ich hab mich auch versucht mit µC zu beschäftigen, aber das verläuft bei mir irgendwie immer in Sackgassen, bzw. kann ich mich damit nicht wirklich anfreunden, obwohl ich es gerne lernen würde. Aber BTT: dachte da eher an sowas www.ute.de/advantech/usb/index.php

wird wohl aber eher in die Kategorie 3-4stellig passen. Schade, dachte da gibts was relativ einfaches. wie gesagt, mit µC kanni ch durchaus nachvollziehen, aber da fehlts einfach mal an den Kenntnissen.

_________________
Fährst Du rückwärts an den Baum, verkleinert sich dein Kofferraum!
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Fr 09.04.10 20:44 
Also eine recht gute Anlaufstelle für Fragen zur Mikrocontroller-Programmierung ist www.mikrocontroller.net/ - musst nur kurz sagen, welches Board und welchen Controller Du hast. Weil bei µCs kommt man leider nicht ohne das Lesen der Datenblätter aus. Außerdem muss man sich in der Programmierung ein wenig umgewöhnen. Das bisschen C nebenher ist da das geringste Problem ;-)

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Fr 09.04.10 23:56 
Du könntest es hiermit probieren: arduino.cc/en/

Auf dem Board befindet sich ebenfalls ein Atmel Mikroprozessor. Des weiteren sind schon Komponenten für die Kommunikation mit der seriellen Schnittstelle (über USB) enthalten. Programmieren lässt sich dieser klassisch mit dem AVR Studio in Assembler oder C oder mit dem Arduino Tool.
Ich würde letztere empfehlen, da dort ein Derivat der Sprache Processing verwendet wird. Diese ist sehr ähnlich zu Java oder C++ und komplexe Funktionen wie A/D-Wandlung oder Pulsweiten-Modulation sind dank der mitgelieferten Bibliotheken mit nur einem Befehl möglich.

So sähe das dann zum Beispiel aus:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
#define ledR 6
#define ledG 5
#define ledB 3

void setup() {
  pinMode(ledR, OUTPUT);  
  pinMode(ledG, OUTPUT);  
  pinMode(ledB, OUTPUT);    
}

void loop() {
  int r = 0;
  int g = 255;
  int b = 255;
  
  analogWrite(ledR, r);
  analogWrite(ledG, g);
  analogWrite(ledB, b);
}

Der entsprechende Assembler Code ist dann schon ein anderes Kaliber. Vielleicht kannst du die Tools auch mit deinem Board nutzen.
Gruenschnabel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 41

Windows 7, 10
Delphi6, Delphi7SEportable, Delphi 10 Berlin Starter
BeitragVerfasst: Sa 10.04.10 07:11 
Servus!

Also ich hab mir ca. vor nem halben Monat von AVR das STK500 zugelegt. Eigentlich zu dem Zweck, mich nach und nach in die Materie einzuarbeiten. Vorkenntnisse sind kleiner 0. Leider. Losgelöst davon erreichte mich nun beschriebenes Problem. Da ich es noch nicht mal schaffe mit nem Taster eine LED zum leuchten zu bringen, wird der Rest erst recht nicht möglich sein. Dazu ist die vorhandene Aufgabenstellung im Moment einfach zu komplex. Natürlich würde es mich reizen, das hinzubekommen, aber ich bin da Realist :-D
Da erscheint es mir fast noch einfacher eine SPS als Interface zu nutzen :-D

Was wäre denn zB, wenn ich 4 LPT's nutzen würde? 1x Onboard und 3x via PCI... Würde das theoretisch funktionieren? Somit hätte ich, wenn ich das beim überfliegen richtig verstanden habe, 32 Datenleitungen zur Verfügung.

Ich komme ja eher aus der SPS-Abteilung (ABB KT9x Serie). Da brauchte man sich um I/Os meistens keine Gedanken machen, weil in Hülle und Fülle vorhanden. Im Privatbereich aber so gut wie undenkbar da preislich kaum erschwinglich


MfG,

Gruenschnabel, der leicht resigniert ist :-)

_________________
Fährst Du rückwärts an den Baum, verkleinert sich dein Kofferraum!
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Sa 10.04.10 12:30 
Das STK500 ist eigentlich der Overkill für deine Zwecke :mrgreen:
Eigentlich sollte das bisschen I/O was du brauchst kein Problem darstellen.
Serielle Schnittstelle ist ein bisschen fummelig, aber auch kein Ding der Unmöglichkeit. Der ATMega16 und der ATMega32 haben beide 32 I/O Pins, also würde ich es ruhig damit probieren. Falls du Fragen hast, ich kenne mich einigermaßen mit der Assemblerprogrammierung der ATMegas aus (C verwenden wir erst dieses Semester :P).
Was ist denn momentan auf deinem STK500 drauf?
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Sa 10.04.10 13:10 
@Fear: ASM ist Overkill, da das langsamste die externe Peripherie ist (also RS232 u.s.w.) Und in C ist das eigentlich recht einfach.

Zum Thema LED blinken lassen:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
while (1) {
    PORTA = 0xFF;
    for(volatile int32 i = 0; i < 100000; i++) { /* Do nothing */ }
    PORTA = 0x00;
    for(volatile int32 i = 0; i < 100000; i++) { /* Do nothing */ }
}


Davor Im DDRA (Data Direction Register) noch auf Ausgabe stellen und es sollte gehen. Was dort rein muss, findest Du im Datenblatt. - Hab nicht umsonst gesagt, das Lesen der Datasheets\Specs hilft bei µCs ungemein ;-)

P.S.: int32 gibt's in der stdint.h; Einbindung dieser Datei ist eine Übungsaufgabe ;-)

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Horst_H
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1652
Erhaltene Danke: 243

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: Sa 10.04.10 16:41 
Hallo,

es gibt ja noch BASCOM,Pascal etc für AVR siehe
www.mikrocontroller....rticles/Linksammlung
Wahrscheinlich reicht Dir von AVRco eine Version für den Atmega8/88, die kostenfrei ist.
Extern einfach ein paar I2C Port Expander, oder http://www.rn-wissen.de/index.php/I2C_Chip-Übersicht und per Uart/RS232 an den PC.
Wenn der IO-Expander einen Defekt hat oder unpfleglich behandelt wurde, braucht diesen nur tauschen und nichts neu programmieren ( nach Jahren? )

Gruß Horst

@BenBe:
zum Glück kann man statt Leerschleifen auch genauer warten, ala :
#include <avr/delay.h>
delay_ms(5);
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Sa 10.04.10 19:42 
user profile iconBenBE hat folgendes geschrieben Zum zitierten Posting springen:
@Fear: ASM ist Overkill, da das langsamste die externe Peripherie ist (also RS232 u.s.w.) Und in C ist das eigentlich recht einfach.

Prinzipiell unterscheidet sich C in der Verwendung auch nur durch die Syntax. Wie man Ausgänge setzt, Dinge wie Interrupts initialisiert, daran ändert sich ja nichts. Und viel ASM code ist das auch nicht.
Gruenschnabel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 41

Windows 7, 10
Delphi6, Delphi7SEportable, Delphi 10 Berlin Starter
BeitragVerfasst: So 11.04.10 06:59 
user profile iconGruenschnabel hat folgendes geschrieben Zum zitierten Posting springen:
[...] Vorkenntnisse sind kleiner 0. Leider.[...]


Eure Euphorie möchte ich haben. :-) Ich kann grad mal SMD von konventionell unterscheiden ;-)
Das STK500 wurde mir von vielen empfohlen, da es angeblich sowohl für Anfänger, als auch für Fortgeschrittene bestens geeignet sei. Die Tutorials im inet, die ich so gefunden habe sind zwar allesamt schön und gut, aber mir fehlts an den einfachsten Grundlagen. Schaltplan entwicken, Platine herstellen und bestücken ist keine wirklich Hürde... es scheitert an der Programmierung des µC.

Auf dem Board wurde ein Atmege8 mitgeliefert, der mit einer Taste 8 LEDs im Binär-Code leuchten lässt. Die Doku habe ich zwar schon durchforstet, aber den Quelltext habe ich nicht gefunden. Hintergrund war der, dass ich mir aus diesem erhofft hatte, die ein oder andere Frage klären zu können.


MfG, Gruenschnabel


P.S. Sind die 4 LPT Ports denn nun rein theoretisch machbar?

_________________
Fährst Du rückwärts an den Baum, verkleinert sich dein Kofferraum!
haentschman
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 285
Erhaltene Danke: 33


DX10 Berlin Professional
BeitragVerfasst: So 11.04.10 09:59 
Zitat:
P.S. Sind die 4 LPT Ports denn nun rein theoretisch machbar?

...sicherlich, aber dann stehst du immer noch vor dem Thema der Galvanischen Trennung des PC von "Extern". Da ist eine Schnittstellenkarte oder wie oben beschrieben die bessere Wahl.
Metschu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 135

Windows XP SP2 Home
Delphi 7; Delphi XE2-Starter
BeitragVerfasst: So 11.04.10 11:07 
Moin zusammen!

Evt wäre diese USB-Karte etwas.

Hier gibts die Beschreibung und Beispiele dazu.

Karte gibts übrigens auch über Conrad.

Gruß

Torsten
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: So 11.04.10 13:26 
user profile iconGruenschnabel hat folgendes geschrieben Zum zitierten Posting springen:

Auf dem Board wurde ein Atmege8 mitgeliefert, der mit einer Taste 8 LEDs im Binär-Code leuchten lässt. Die Doku habe ich zwar schon durchforstet, aber den Quelltext habe ich nicht gefunden. Hintergrund war der, dass ich mir aus diesem erhofft hatte, die ein oder andere Frage klären zu können.

Der ATMega8 hat nur 23 I/O Ports soweit ich weiß. Du müsstest dir also schon mindestens einen ATMega16 organisieren (nicht teuer: 2-4€).

Ein einfaches I/O Beispiel findest du hier:
www.mikrocontroller....orial:_IO-Grundlagen (Assembler)
oder hier: www.mikrocontroller....Zugriff_auf_IO-Ports (C)

Und falls für dich doch ein Arduino (<30€) in Frage kommt, gibt es hier sehr, sehr einfache (teils bebilderte) Beispiele: arduino.cc/en/Tutorial/HomePage
Horst_H
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1652
Erhaltene Danke: 243

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: So 11.04.10 13:39 
Hallo,

wie ware ein USB->I2C Adapter, der als serielle Schnittstelle mit bis zu 750 khz I2C ansprechen kann. ( Uart/ RS485 bis zu 2 MBaud )
Mit Treibern und Delphi Beispielen.
Zur galvanischen Trennung vielleicht eine Porttreibervariante oder www.nxp.com/document...ation_note/AN460.pdf beherzigen.

Dann 4 x PCF 8574 dran, die besonders einfach anzusprechen sind (lesen = Eingang schreiben=> Ausgang ) , und fertig ist die Kiste.
Und das Beste, man muß nichts lernen, nur löten ;-)


Gruß Horst
Hobby-Programmierer
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 238
Erhaltene Danke: 4

Win XP Pro, Vista Ultimate Trial :o)
D6 Pro, D7 Pro, Turbo, XE SE
BeitragVerfasst: So 11.04.10 23:00 
user profile iconMetschu hat folgendes geschrieben Zum zitierten Posting springen:
...
Evt wäre diese USB-Karte etwas.
...

:zustimm: Super, genau sowas habe ich auch gesucht. Demo in Delphi ist auch dabei ...
Gruenschnabel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 41

Windows 7, 10
Delphi6, Delphi7SEportable, Delphi 10 Berlin Starter
BeitragVerfasst: Mo 12.04.10 14:06 
user profile iconMetschu hat folgendes geschrieben Zum zitierten Posting springen:
Moin zusammen!

Evt wäre diese USB-Karte etwas.

Hier gibts die Beschreibung und Beispiele dazu.

Karte gibts übrigens auch über Conrad.

Gruß

Torsten


Servus!

Wunnerbar!!! Hast du eventuell die Artikel-Nr zu Conrad? Ich such hier schon ne halbe Stunde ohne wesentliche Erfolge kaputt.



EDIT: 502176 - 62

Bist mein User des Monats :-)

_________________
Fährst Du rückwärts an den Baum, verkleinert sich dein Kofferraum!