Shock Media

Navigatie

10 interrupt pinnen nodig - PIC

Forum > Schoolvragen > 10 interrupt pinnen nodig - PIC 1 | 2 | 3 | Volgende >>
Naam Bericht
ThieuV

Hallo,

voor een projectje met flowsensor heb ik een 10 interrups pennen nodig met nog nog 10 digitale pennen.

Nu is mijn hoofd PIC 4550 die met usb aan pc komt voor programmeren met C# en C. Maar deze µC heeft maar een 3 tal interrups pennen.

Nu dacht ik van eventueel een andere pic met deze pic te laten communiceren. Maar hier heb ik nog geen ervaring mee. Of heeft iemand een andere oplossing? Het is de bedoeling om de pulsen te tellen van de flowsensors
The Headhunter

Kan je niet alle pinnen koppelen aan een interupt pin.
Bij een interupt vervolgens de 10 ingangen bekijken welke de veroorzaker was.
http://www.ikbeneenschaapendoe.be/
ThieuV

Had dit ook al in gedachten gehad. Maar ik moet tegelijk kunnen weten hoeveel er al door iedere flowsensor gelopen is.
weerstandje

Maar wat moet er de pic dan nog meer doen dan usb en pulsen tellen? Anders lijkt met wel dat je gewoon een grote loop kunt schijven waar je allen maar naar de pulsen kijkt.

veder als je echt een ander pic wilt gaan gebruiken dan zijn er tal van mogelijk heden.

code:
 I2C
 SPI
 RS232


Maar rs232 is wel het meest simpele.
ThieuV

Het is voor het volgende:
Ik heb een aantal vloeistoffen om te mengen in verhoudingen.
Bij iedere flowsensor komt nog een klepje. En als ik bv 10CL van die stof nodig heb gaat haar klepje open tot wanneer er 10cl gepasseert is bij de flowsensor
elmowww

PCF8574 van philips.

I2c IO expanders met een interrupt uitgang (wel open collector geloof ik, dus je moet even een pullup plaatsen (zie datasheet).

Je krijgt een interrupt binnen, via I2C status uitlezen en je tellers bijhouden.
e.jongerius[aapje]eje-electronics.nl - Elektronica ontwikkeling
ThieuV

Ik ben nog niet echt zo een grote expert in dit. Dus als ik het goed begrijp: hang ik dan aan iedere I/O pen een flowsensor. En via I2C kijk ik van welke sensor het komt?

Iemand misschien nog wat informatie over I2C?
kluyze
Golden Member

1 interrupt en een addressbus?

Je kan toch niet tegelijk meten, er kan namelijk maar 1 interrupt-routine tegelijk uitgevoerd worden. Er zijn namelijk 2 mogelijkheden: 1. Je laat geen interrupt toe tijdens een interrupt routine of 2. je laat wel een interrupt routine toe en dan gaat je eerste interrupt routine gestopt worden.

Dus of je nu met 10 apparte interrupts werkt of je werkt met 1 interrupt en een 4-bit addressbus geeft kwa timing zo goed als hetzelfde resultaat.

Wat ook misschien ergens een mogelijkheid is, (een pci-bus werkt op die manier) is gewoon 4 IRQ's gebruiken voor tot 16 (24) apparaten te laten connecten, maar dan ga je wel een tussen apparaat nodig hebben, een soort van arbiter.
'The only thing 2 engineers will agree upon, is that the 3rd one is an idiot.' - 'shakespear was a mathematic : root(4*b^2) = 2b or -2b'
ThieuV

Dus eigenlijk als ik echt wil zeker zijn moet ik gewoon 10 pics nemen deze koppel aan mijn 4550 en dan vandaar via een communicatie middel(het eenvoudigst, RS232?) door sturen welke hoeveelheid?

Dan kan ik pas alles gelijktijdig laten lopen?
[Bericht gewijzigd door ThieuV op 9 augustus 2008 22:13:32]
kluyze
Golden Member

Je kan ook gewoon 10 counters nemen, om alleen te tellen en het getal door te geven heb je geen µC nodig. Als je een teller neemt kan die ook rechtstreeks iets anders aansturen.
'The only thing 2 engineers will agree upon, is that the 3rd one is an idiot.' - 'shakespear was a mathematic : root(4*b^2) = 2b or -2b'
ThieuV

Probleem is dat de hoeveelheid veranderdelijk is.
Babylon

Waarschijnlijk is een interrupt routine binnen een paar nanoseconden klaar. 10 Pics lijkt me dan ook een beetje teveel van het goede.

Trouwens, als je slim programmeert mis je sowieso geen interrupt.
Heeft ook een Website. Nu doet ie het weer!
FullPower

Wat is de maximum pulsfrequentie per ingang??
De grootste moeilijkheden liggen daar waar we ze niet zoeken. [Goethe]
ThieuV

Ja dat is zo maar als de flowsensors dan op de zelfde moment een puls geven?
ThieuV

Hangt af hoe rap de vloeistof loopt.. Dit kan ik niet zeggen, is veranderlijk van stof tot stof..
jovak

quote:
Op 9 augustus 2008 22:20:01 schreef Babylon:
Waarschijnlijk is een interrupt routine binnen een paar nanoseconden klaar.


wat in zou houden dat je PIC op een klok frequentie van een paar GIGA hertz draait.


Als je een paar microseconde zegt klinkt het al waarschijnlijker.

@TS. Een combinatie van een microcontroller en een FGPA /CPLD lijkt me een handiger
[Bericht gewijzigd door jovak op 9 augustus 2008 22:30:49]
meten is weten, weten is meten, maar hoe kan je weten wat je allemaal moet meten en weten.
Babylon

Ja whatever, anders ga je 't ff narekenen... 't is waarschijnlijk snel genoeg en daar gaat het om.

Maar thieuv, interrupts kunnen interrupts interrupten. Hehe snap je 'm nog? Leuke zin. Als interrupt 1 wordt onderbroken door interrupt 2, kun je vervolgens nog wel terug naar interrupt 1 om die af te maken.

En als je onhandig wilt doen kun je altijd nog de flowsensors een flipflop laten zetten. En dan een loopje om alles op je gemak uit te lezen. Is ook wel snel genoeg denk ik zo.

Hoe lang duren die pulsen van de flowsensors, trouwens?
Heeft ook een Website. Nu doet ie het weer!
kluyze
Golden Member

quote:
Op 9 augustus 2008 22:24:15 schreef ThieuV:
Hangt af hoe rap de vloeistof loopt.. Dit kan ik niet zeggen, is veranderlijk van stof tot stof..
Je moet toch een idee hebben wat voor stoffen er gebruikt worden en wat voor die stoffen de frequentie is.

@Babylon, inderdaad interrupts kan je interrupten, maar dan ga je moeten afwijken en een µC met 10 interrupt lijnen moeten vinden, en geloof me dat gaat hij niet vinden.
[Bericht gewijzigd door kluyze op 9 augustus 2008 22:42:23]
'The only thing 2 engineers will agree upon, is that the 3rd one is an idiot.' - 'shakespear was a mathematic : root(4*b^2) = 2b or -2b'
ThieuV

Mja ga denk ik eerst even moeten met de scoop kijken.
Het gaat namelijk om cocktail dranken, en zie het namelijk nog niet zitten om deze allemaal te kopen. Omdat ik en mijn maat anders meer dronken aan onze ontwerptafel gaan zitten dan wat anders

Maar ik heb nu al ervaring met de PIC4550 dus zou heel graag deze gebruiken, het is namelijk voor een eindwerkje voor volgend jaar. Zit in het 6de middelbaar dan en zo al een beetje mijn eindwerk aan het voorbereiden.

Dus de mogelijke oplossingen zijn? Zou me graag even willen verdiepen in deze oplossingen en zelf ook wat bij leren.
[Bericht gewijzigd door Henry S. op 9 augustus 2008 22:50:48]
FullPower

quote:
Op 9 augustus 2008 22:45:06 schreef ThieuV:
...Omdat ik en mijn maat anders meer dronken aan onze ontwerptafel gaan zitten...

Relaxed Toch??

Meer dan 500Hz tot 1KHz zal het toch niet zijn (??) Ik zou dan ook kiezen voor een één of andere flipflop die wordt gezet door het signaal van de sensor en wordt gereset door de MCU. De MCU heeft dan alle tijd om de flipflips uit te lezen. Wel erop letten dat er pulsen gemist kunnen worden.

Zomaar een idee:
Je kunt dat een interrupt genereren (OR van alle FF uitgangen) als één FF gezet wordt. Er kunnen meerdere FF's actief zijn. Na inlezen laat de MCU alleen de FF's met een hoog op moment van inlezen resetten aan het einde van ISR. Als een FF een fractie later wordt gezet, zal deze later geserviced worden. Je kunt natuurlijk deze flip-flop logica prima in een CPLD of FPGA zetten, maar discreet gaat ook.

FullPower
De grootste moeilijkheden liggen daar waar we ze niet zoeken. [Goethe]
ThieuV

Ga dan toch ook moeten zorgen dat ik rap genoeg de flipflop reset?

Relaxed zou het zeker zijn! Alleen moet op het einde van het schooljaar het hele project perfect werken
[Bericht gewijzigd door ThieuV op 9 augustus 2008 23:01:17]
flipflop

10 interrupts is zwaar overkill. 10 PICs al helemaal! Is al gezegd.
Je moet weten hoe zo'n puls van de sensor eruit ziet. Ik heb zelf de indruk dat je heel goed kunt pollen in een korte main loop. Als je een flank ziet, doe je wat, bv teller ophogen, wat je wilt. Uiteraard moet je loop daarvoor snel genoeg zijn om de puls te zien. Over het algemeen gaat dat heel goed, just met de PICs.
Dus: hoe ziet je puls eruit en wat is de frequentie range?
if (rst='1') then d <= '1' elsif (clk'event and clk='1') then d <= data end if;
Videomodulator
Golden Member

Even resumeren, want ik ben niet helemaal mee:
-Je maakt een automagische cocktail-maker, die 10 verschillende dranken in variabele dosering kan afleveren.
-Aansturing gebeurt met een PIC.
-Gedoseerde hoeveelheid wordt gemeten met flow-sensoren.
-Elke soort drank heeft een snelle klep die de flow opent en afsluit (door PIC aangestuurd).

Het probleem wat je schetst is (als ik het goed begrijp) dat je alle 10 de dranken gelijktijdig aan hoge snelheid (want uitlezing van de flowsensoren moet zo snel dat interrupts noodzakelijk zijn, dan denk ik aan een flow van liters per seconde) in een cocktailglas wil spuiten.
Oplossing (als ik je probleem goed begrijp):
-Besef dat de drank niet zo snel gaat vloeien (welke flowensoren gebruik je, als je tot op cl juist wil meten zullen die de flow flink beperken).
-Laat de dranken één na één gedoseerd worden, als dat werkt kan je gaan meten en rekenen tot hoeveel dranken je gelijktijdig kan doseren (met 3 gelijktijdige doseringen kan je erg veel cocktails maken). En wellicht kan je uitrekenen dat de PIC bij het cocktail-uitschenken nog massa's tijd over heeft om uit zijn neus te eten.
-Als er een drank te snel loopt, kan je nog altijd een kraantje in zijn flow zetten.
[Bericht gewijzigd door Videomodulator op 10 augustus 2008 00:03:25]
AKA Naftebakje @Tweakers.net --- Zonder dwarsliggers geen spoor
ThieuV

Naar aanleiding van het artikel de pientere peilstok uit elektor. Heb ik een sensor gevraagd aan die firma en ze hebben me deze gegeven. Het 1,2mm doorgang model.
http://www.digmesa.com/digmesa/upload/pdf/FHKSC/932-850xxxx_GB.pdf
De maximum flowrate is een 0,5l/min...

Het moet voor mij niet via interrups maar in die schakeling van de pientere peilstok ging deze aan een interrupt pen.
Als het anders mogelijk is is dit voor mij ook goed.

Hoe zou je het doen als ik ze een voor een wil laten doseren?
En hoe als ik bv 3 dranken in 1 wil laten doseren.
Zou eventueel beiden willen kunnen. Dat men bv kan kiezen tussen in lagen of om onmiddelijk te mengen.
flipflop

Hoeveel pulsen geeft de sensor en hoe ziet het signaal eruit bij de doseersnelheid die je wilt hebben? Dat bepaald of je via irq's moet werken of dat je simpelweg kunt pollen.
if (rst='1') then d <= '1' elsif (clk'event and clk='1') then d <= data end if;
Zoeken in topic 1 | 2 | 3 | Volgende >>