15. marts 2002 - 12:20Der er
14 kommentarer og 2 løsninger
Kommunikation med seriel-port og parallel-port og temperatur måle
Jeg tænkte på om der ikke er noget af jer hoveder herinde som måske kunne give lidt info om hvordan man kan snakke med seriel-porten eller parallel-porten. Det der skal ske er at en temperatur måler skal sende noget text til computerens port(e), som mit program skal modtage. Så derfor er det ikke kun info omkring kommunikation med portene jeg gerne vil vide noget om, men også assembler og programmering af en chip, som skal kunne sende den data.
Håber der er noget som kan hjælpe med lidt. Og spørg endelig om mere info, for jeg ved godt at det lyder lidt sort det oven for
brug en Pic-16C73 processor, den har indbygget serielport og 4xanalog indgang.
Alternativt hvis du ikke selv vil lode elektronik sammen kan jeg anbefale en lille PLC f.eks SAIA-M110, den kan du få temperatur kort til, og det er ganske nemt at kommunikere med den via en lille protokol du selv definere til den indbyggede serielport, og du kan her vælge mellem RS232 og RS485
Først og fremmest skal du du ind på www.microchip.com og kigge på følgende chips
PIC16F84 og PIC16F87x
Disse er flash programmerbare, hvilket er et MUST når du skal til at lære at programmerer dem ;-) og en brænder kan nemt "loddes" sammen af ganske få komponenter - eller du kan købe en færdig hos Brink
På microcip finder du gratis udvikingsværktøjer og alt den dokumentation du skal bruger.
Kig så ind på f.eks. www.devrs.com eller led på google efter PIC
doc404 >> det må jeg siger jeg siger da tak, så vil jeg da kigge lidt på det derinde. men hvis der er nogen som kan fortælle lidt mere om hvordan det egentlig er at jeg skal lave det, ja lidt mere info. men indtil vidre vil jeg selv prøve at kigge lidt vidre...
Til selve temperaturgiveren skal du bruge en temperaturafhængig modstand, den kobler du til en af de analoge indgange på PIC processoren, du kan sagtens finde en application på det på nettet et eller andet sted,
Afhængig af hvor nøjagtig du skal måle, vil jeg nok anbefale en løsning med en temp. måle chip, de fås, ellers ville jeg bruge en diode/transistor ( evt. en i metal hus ) en diodes spænnings fald ændre sig i forhold til varme, og er mere nøjagtigt end en modstand, men brink har hvad du skal bruge.
martin >> lyder intresant. men det med at få den til at måle regner jeg ikke med er noget problem, det er mere det at få noget sendt tilm chippen og lavet det o på en måde og sendt det til computeren. og måden jeg skal modtage dataen er jeg heller ikke sikker på, så jeg ville meget gerne have lidt hjælp på det område...
Hvis størelse ikke er et problem findes der også en proccesor der hedder 8051, den har også det hele og findes i alle mulige udgaver, og med indbygget seriel port, du kan kommunikere med den vha. en terminal eml. ( VT100 ), men prøv at gå ned og snak med brink, han har et hav af mulighedder.
Du skal bruge en seriel komponent i din Delphi ende, kig lidt på Async32 herfra, hvis du gerne vil lege med det på en nem måde så tager du et 9-polet eller 25-polet stik alt efter hvad der passer i din Com port, så ligger du en forbindelse mellem ben 2 og 3, det betyder at hvad du sender ud på porten får du det samme tilbage, det vender lige i dit stik.
når du skal kommunikere med din processor opretter du en lille protokol, hvis du f.eks vil læse et register i din kreds sender du
#2 + regnr +#3, hvor #2 altid er din start karrakter og #3 bruger du til stopkarakter, så har du noget at checke på hvornår dit telegram starter og slutter.
i din Pickreds står du så og poller på din seriel buffer når der kommer en #2 så ved du at dit telegram starter, og #3 så slutter det, hvis du så der imellem sender et Ascii'1' tal ja så skal du programmere din sende rutine op i din Pic kreds til at sende din første måling afsted.
i den anden ende benytter du dig af en tilsvarende protokol den kan f.eks se sådan her ud
#2 + '1' + 'Målingen + #3, nu kan du i din modtage rutine på din seriel komponent dicifrere hvad der kommer tilbage.
skal det være rigtig fint kan du slutte dit tellegram af med en checksum, hvis checksummen ikke passer med det modtagne telegram genspørger du på værdien
Mht til temperatursensor så kig evt. ind hos www.dalsemi.com (nu en del af Maxim) - de har et hav at temperaturfølere "in a chip" som ikke kræver kalibrering etc.
Hvis du vælger en PIC16F87X har den en indbygget serial interface, hvor du blot skal "vende" signalet evt. via en RS232 level konverter som f.eks. MAX232 (www.maxim-ic.com) eller hvis din kabler ikke er for lange med en simpel transistor + et par modstande. PIC'en kan køre næsten alle hastigheder alt efter hvilket krystal du benytter.
I Delphi enden kan du benytte et hvilket som helst commlib (f.eks. det nævnte andetsteds her). Specifikt hvordan du implementere protokollen er helt op til dig selv.
Men jeg kan kun sige en ting! PIC is fun! De har et simpelt instruktions set (omkring 35 instruktioner) og er relativt nemme at gå til.
Men kig rundt på nettet efter PIC og PIC16F84 (den mest udbredte blandt hobby folket). Der er en masse guldkorn rundt omkring.
Når du når til selve assembler programmeringen er du velkommen til at spørge
doc404 >> jeg takker for dit indlæg, og jeg vil lige kigge lidt mere på pic16F8x, jeg har hentet pic'en Datasheet og det vil jeg også lige kigge lidt på. og så tager jeg lige en tur ind til brinck og hører lidt der. og jeg er meget glad for at må spørge når det kommer til assembler'en for jo noget hjælp tror jeg jeg bliver nød til at have.
når så var jeg inde og snakke med brinck og det var da lidt nedtur. det kunne de ikke rigtig fortælle mig så meget om, ikke andet end at de havde et samlesæt hvor der ikke kunne bygges en ad converter til. og så kunne jeg jo kigge på nettet, hurra siger jeg bare...
men så er det nu jeg håber lidt på jer herinde, det var ikke sådan at der måske var en som havde fundet noget i mellem tiden, med et byggediagram eller noget i den retning?
Håber at der er noget :)
/ZIRON
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.