Acties:
  • 0 Henk 'm!

  • mad_max234
  • Registratie: September 2003
  • Laatst online: 07-02 11:09
RobV schreef op zondag 26 oktober 2014 @ 14:17:
Een taal is veel meer dan de basisnotatie. dus alle romaanse talen zijn gelijk omdat zinnen beginnen met een hoofdletter, wootden gescheiden door spatie en eindigen met een punt, vraagteken of uitroepteken? volgens jou is dan javascript ook gelijk aan C. Dan zijn er wel honderd talen die gelijk zijn aan C.
Kom op zeg, is wel meer dan begin en end wat hetzelfde is. laten we iets dichter bij huis houden(ik heb geen kennis van romaanse talen ;) ), is meer zoals Belgisch en Nederlands op elkaar lijken, ze gebruiken paar andere woorden en zinnen zijn soms iets anders opgebouwd, maar meer dan dat is het niet, als je even GUI en classes en zo even vergeet(doorheen kijkt) grofweg gezegd. Natuurlijk zijn er nuances en uitzonderingen te vinden, dat ontken ik ook niet.

Bijna alle programmeer talen lijken ook veel op elkaar, vandaar dat meeste mensen ook bijna alle talen kunnen lezen als ze er aantal kunnen schrijven. ;) Maar C en C# zitten heel dicht op elkaar, draagt niet voor niks C in de naam, net als C++ en C dicht op elkaar zitten dan andere talen op C zit.

[ Voor 8% gewijzigd door mad_max234 op 26-10-2014 15:18 ]

-Andere hobby- -


Acties:
  • 0 Henk 'm!

  • RobV
  • Registratie: Juni 2013
  • Niet online

RobV

Welcome to the grid, Program.

(overleden)
Laten we het erop houden dat ik 100 neen 1000x liever in C# develop dan in C. Nee nog beter, ik leid 100x liever een C# team dan een C team. Veel minder geneuzel met de details. Ik zit al jaren in de development en sinds de introductie van C# in ons team is het aantal bugs en crashes enorm gedaald. Dit is vooral te wijden aan memory management, exception handling en casting.

 | Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72


Acties:
  • 0 Henk 'm!

  • mad_max234
  • Registratie: September 2003
  • Laatst online: 07-02 11:09
Ja daar bent ik mee eens, maar dat is toch echt weer iets heel anders. :)

Edit/
Begrijp me niet verkeerd, mijn voorkeur gaat ook uit naar C# wat betreft windows applicaties, maar voor embedded gaat mijn voorkeur uit naar C of C++.

Ik zeg alleen dat als je met C bezig bent je C# ook makkelijk erbij kan oppakken, en zelfs javascript, maar stap je over naar perl python dan word het toch lastig dan naar C#.

[ Voor 72% gewijzigd door mad_max234 op 26-10-2014 19:51 ]

-Andere hobby- -


Acties:
  • 0 Henk 'm!

  • roodbwoy
  • Registratie: November 2003
  • Laatst online: 28-10-2021

roodbwoy

Senile Developer

Hi! Ik ben bezig met het experimenteren met synthesis via de Arduino. Geluid genereren + effecten e.d. gaat allemaal prima via een 8 ohm speakertje, alleen wanneer ik deze speaker er tussen uit haal en een (jack) kabel tussen zet naar m'n analoge mixer die aangesloten is op actieve speakers (Yamaha HS80M) dan hoor ik heel zachtjes het geluid wat arduino genereert, m'n volume schuiven op de mixer versterken dit signaal niet, ik kan schuiven wat ik wil, er gebeurd niets.

Ik zelf denk dat het komt omdat het signaal ouput niet overeenkomt met wat een de mixer vraagt, nu wil ik hier heel graag een oplossing voor verzinnen alleen door gebrek aan kennis weet ik niet zo goed hoe ik de vraag moet formuleren, kan iemand mij een zetje in de juiste richting geven?

Acties:
  • 0 Henk 'm!

  • Vuikie
  • Registratie: December 2003
  • Laatst online: 08:29
Klinkt als dat je aan voor versterking moet doen. De Arduino kan wel genoeg genereren om wat fantsoenlijks uit het 8 ohm speakertje te laten klinken maar je versterker/mixer heeft een wat krachtiger signaal nodig. Probeer eens een platenspeler voorversterker, als je die hebt liggen.

Acties:
  • 0 Henk 'm!

  • RobV
  • Registratie: Juni 2013
  • Niet online

RobV

Welcome to the grid, Program.

(overleden)
iemand had mij een tijdje getipt om een lm386 te pakken, dit kleine versterkerchipje heeft niet feel componenten nodig voor een flinke gain.

 | Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72


Acties:
  • 0 Henk 'm!

Verwijderd

roodbwoy schreef op maandag 27 oktober 2014 @ 19:00:
Hi! Ik ben bezig met het experimenteren met synthesis via de Arduino. Geluid genereren + effecten e.d. gaat allemaal prima via een 8 ohm speakertje, alleen wanneer ik deze speaker er tussen uit haal en een (jack) kabel tussen zet naar m'n analoge mixer die aangesloten is op actieve speakers (Yamaha HS80M) dan hoor ik heel zachtjes het geluid wat arduino genereert, m'n volume schuiven op de mixer versterken dit signaal niet, ik kan schuiven wat ik wil, er gebeurd niets.

Ik zelf denk dat het komt omdat het signaal ouput niet overeenkomt met wat een de mixer vraagt, nu wil ik hier heel graag een oplossing voor verzinnen alleen door gebrek aan kennis weet ik niet zo goed hoe ik de vraag moet formuleren, kan iemand mij een zetje in de juiste richting geven?
Plug je de arduino toevallig in een gebalanceerde input?
Of heeft de mixer geen ingang met een hoge impedantie? Misschien een microfoon of instrument input?

Acties:
  • 0 Henk 'm!

  • Stijnb_
  • Registratie: Oktober 2009
  • Laatst online: 17-09 08:36
Ik ben bezig met een projectje waar ik nog tamelijk veel analoge ingangen voor nodig heb.
Dus ben ik opzoek naar een analoge input expander.
Iemand die mij iets goeds kan aanraden?

Acties:
  • 0 Henk 'm!

Verwijderd

Stijnb_ schreef op maandag 27 oktober 2014 @ 20:28:
Ik ben bezig met een projectje waar ik nog tamelijk veel analoge ingangen voor nodig heb.
Dus ben ik opzoek naar een analoge input expander.
Iemand die mij iets goeds kan aanraden?
Hoeveel kanalen op wat voor resolutie nodig? Een SPI ADC chip? Iets als een Analog Devices AD7699?
mad_max234 schreef op zondag 26 oktober 2014 @ 15:24:
Ik zeg alleen dat als je met C bezig bent je C# ook makkelijk erbij kan oppakken, en zelfs javascript, maar stap je over naar perl python dan word het toch lastig dan naar C#.
In deze discussie moet ik me dan ook maar even mengen... Er zit een wereld van verschil tussen C en C++. Misschien is de syntax hetzelfde, maar het is zeker niet zo dat iemand die C++ kan schrijven, en misschien ook wel de syntax van een classe begrijpt ook 'C++ kan programmeren'. Het verschil tussen C en C++ zit hem namelijk in de denkwijze van object georiënteerd programmeren, en om dat goed onder de knie te krijgen is (voor veel mensen) veel ervaring nodig. Abstraction, object oriented design patterns, instances, inheritance, .... In C++ programmeren zonder objectgeorienteerde denkwijze biedt ook echt 0 meerwaarde boven gewoon C. Als je dus zegt dat C en C++ (of C#) dus bijna hetzelfde zijn begrijp je dus echt niet waar het in die talen nou juist om gaat...

[ Voor 65% gewijzigd door Verwijderd op 27-10-2014 20:46 ]


Acties:
  • 0 Henk 'm!

  • Stijnb_
  • Registratie: Oktober 2009
  • Laatst online: 17-09 08:36
Die AD7699 zit er goed uit bedankt.
Nu nog opzoek naar een goed oplossing voor dan van PWM naar 0-10v te geraken.

Acties:
  • 0 Henk 'm!

  • roodbwoy
  • Registratie: November 2003
  • Laatst online: 28-10-2021

roodbwoy

Senile Developer

Thanks voor de tips, het is een high impendance input, ik ga eens kijken naar die lm386 ic's. De applicatie die ik aan het bouwen bent dient te werken op "elke" mixer. Ik heb volgens mij het zetje gevonden en ga bij conrad eens zo'n ic-tje bestellen!

thanks!

Acties:
  • 0 Henk 'm!

  • Dogooder
  • Registratie: April 2004
  • Laatst online: 09:51

Dogooder

dus...

Ik heb een klein vraagje waar ik gisteravond tegenaan liep. Ik heb een arduino mega waarmee ik een stapppenmotor aanstuur dmv een stepperdriver. Gebruik ik de pinnen 4 tot 7 dan werkt alles prima. Gebruik ik echter de pinnen 45, 47, 49, 51, 53. Dan gebeurt er dus niks; als in het programma werkt wel, maar de pinnen reageren niet.
Zit er een verschil in benadering van de pinnummers?

Acties:
  • 0 Henk 'm!

  • almightyarjen
  • Registratie: Maart 2002
  • Laatst online: 07:48

almightyarjen

When does the hurting stop?

Dogooder schreef op woensdag 29 oktober 2014 @ 13:25:
Ik heb een klein vraagje waar ik gisteravond tegenaan liep. Ik heb een arduino mega waarmee ik een stapppenmotor aanstuur dmv een stepperdriver. Gebruik ik de pinnen 4 tot 7 dan werkt alles prima. Gebruik ik echter de pinnen 45, 47, 49, 51, 53. Dan gebeurt er dus niks; als in het programma werkt wel, maar de pinnen reageren niet.
Zit er een verschil in benadering van de pinnummers?
Pinnen 4 tot 7 zijn allen PWM-outputs, daarnaast 44 t/m 46 zijn dat ook. Dus bij jouw tweede rijtje pinnen heeft niet elke pin een PWM output. Ik weet het niet zeker, maar volgens mij is dat wel nodig voor de aansturing van een stappenmotor...

Patreon | Main Youtube | Work In Progress Youtube


Acties:
  • 0 Henk 'm!

  • Dogooder
  • Registratie: April 2004
  • Laatst online: 09:51

Dogooder

dus...

Ik stuur een polulu stepper driver aan, ik heb hiervoor geen pwm nodig. Gewoon de pinnetjes Step, Direction, Reset en Sleep hoog of laag maken is voldoende. Ik maak wel gebruik van de digtalwritefast "library".

Acties:
  • 0 Henk 'm!

  • Vuikie
  • Registratie: December 2003
  • Laatst online: 08:29
Dogooder schreef op woensdag 29 oktober 2014 @ 14:55:
Ik stuur een polulu stepper driver aan, ik heb hiervoor geen pwm nodig. Gewoon de pinnetjes Step, Direction, Reset en Sleep hoog of laag maken is voldoende. Ik maak wel gebruik van de digtalwritefast "library".
Ik gebruik die library niet, maar hier staat wel iets interessants over die library:
Also some registers on mega are not directly accessible, and therefore will require an additional instruction.
mss handig om in te duiken of de pinnen die jij noemt ook op een poort zitten die niet direct toegankelijk zijn.

Acties:
  • 0 Henk 'm!

  • D-Three
  • Registratie: Oktober 2001
  • Laatst online: 07:15
Stijnb_ schreef op maandag 27 oktober 2014 @ 20:43:
Die AD7699 zit er goed uit bedankt.
Nu nog opzoek naar een goed oplossing voor dan van PWM naar 0-10v te geraken.
pwm naar analoog kan je doen door middel van een laagdoorlaatfilter. Gewoon een weerstand en een capaciteit dus.

Acties:
  • 0 Henk 'm!

  • Stijnb_
  • Registratie: Oktober 2009
  • Laatst online: 17-09 08:36
D-Three schreef op zondag 26 oktober 2014 @ 14:40:
[...]

Draadloos is gemakkelijk om uit te breiden maar dan moet je weer zitten klooien met batterijen. Voordeel van een bussysteem is dat je voeding en signalen via 1 kabel kan overdragen.

[...]

Zoiets dus. Maar volgens mij werkt Catkit niet met ethernet hoor, aangezien er passthrouhg printjes en eindprintjes vereist zijn. Gewoon één of andere bus met terminatie dus.

[...]

Dat is inderdaad het idee, kleine zuinige micocontrollers als I/O op de bus. Waarom precies modbus? RS-485 heb ik ook over nagedacht maar dan ben je wel beperkt tot 32 zender en ontvangers dacht ik? Hoe pak je de adressering aan?
Waarom ik modbus gebruik is omdat het een kant en klaar protocol is en gebruikt wordt in de industrie om te communiceren met plc's en dergelijke. Via modbus kan je dus elke microcontroller een adres geven. Met 32 zender en ontvangers ga ik wel toekomen want ik zal aan elke arduino I/O expander aanhangen.

Acties:
  • 0 Henk 'm!

  • inquestos
  • Registratie: November 2001
  • Laatst online: 07:34
Ik ben bezig met een Tinyduino-accelerometer, ik zie alleen 'vreemde' waarden.

Ik zou bij een accelerometer verwachten dat wanneer het ding stil licht, de X, Y en Z waarden nul zijn. Maar dat is niet zo, wanneer deze stilligt is bijvoorbeeld de waarde voor Z altijd +-250. Meet ik nu de zwaartekracht?

edit:
het moet wel.

Is er een makkelijke manier om de zwaartekracht component er makkelijk uit te halen?

Lijkt me lastig om het zelf te doen, want je weet natuurlijk nooit echt wat de oriëntatie is van je unit. Maar misschien is er al een vrij betrouwbaar algoritme geschreven (Wanneer die enkel draait blijft hij natuurlijk 1G meten, wanneer er nog iets anders gebeurt wordt het meer dan 1G).

[ Voor 35% gewijzigd door inquestos op 01-11-2014 00:48 ]

Fotografie: | Flickr | Canon 5DII + 20mm + 35mm + 50mm + 100mm || Hardlopen: Strava PR 5km: 20:26 10km: 44:35 HM 1:39:58


Acties:
  • 0 Henk 'm!

  • Sissors
  • Registratie: Mei 2005
  • Niet online
Met gyroscoop erbij kan je proberen de richting van je unit te berekenen en daarmee de zwaartekracht eruit te halen. Maar normaal gesproken is het doel van een accelerometer juist om de zwaartekracht te meten.

Acties:
  • 0 Henk 'm!

  • Ploink
  • Registratie: April 2002
  • Laatst online: 21-08 13:05
D-Three schreef op zondag 26 oktober 2014 @ 14:40:
[...]

Dat is inderdaad het idee, kleine zuinige micocontrollers als I/O op de bus. Waarom precies modbus? RS-485 heb ik ook over nagedacht maar dan ben je wel beperkt tot 32 zender en ontvangers dacht ik? Hoe pak je de adressering aan?
Stijnb_ schreef op woensdag 29 oktober 2014 @ 21:22:
[...]

Waarom ik modbus gebruik is omdat het een kant en klaar protocol is en gebruikt wordt in de industrie om te communiceren met plc's en dergelijke. Via modbus kan je dus elke microcontroller een adres geven. Met 32 zender en ontvangers ga ik wel toekomen want ik zal aan elke arduino I/O expander aanhangen.
Modbus heeft ook nadelen. Het is binair en timing gevoelig en dat maakt implementatie en debuggen moeilijker. Ook heb ik gezien dat industriële implementaties erg brak kunnen zijn.

Gebruik de MAX487, dan passen er 128 op de bus. Ik heb een systeem met zo'n 80 slaves al bijna 12 jaar stabiel draaien.
Adressering is onderdeel van de modbus specificatie. Om het adres van de slave in te stellen gebruik ik simpelweg een blokje met 8 dip switches zodat je snel nieuwe hardware kan pakken, switch posities overnemen en weer doorgaan. Maar dat is nog nooit nodig geweest :Y)

Bij genoemde systeem gebruikte ik overigens geen modbus maar een simpel ascii protocol, ongeveer zoals Advantech dat destijds had. Ik gebruikte simpele PIC16 controllertjes en het hele protocol was maar een klein stukje ASM. De specificatie is heel simpel, kan het wel opzoeken en posten als iemand interesse heeft.

Acties:
  • 0 Henk 'm!

  • B_FORCE
  • Registratie: December 2001
  • Niet online
inquestos schreef op zaterdag 01 november 2014 @ 00:19:
Ik ben bezig met een Tinyduino-accelerometer, ik zie alleen 'vreemde' waarden.

Ik zou bij een accelerometer verwachten dat wanneer het ding stil licht, de X, Y en Z waarden nul zijn. Maar dat is niet zo, wanneer deze stilligt is bijvoorbeeld de waarde voor Z altijd +-250. Meet ik nu de zwaartekracht?

edit:
het moet wel.

Is er een makkelijke manier om de zwaartekracht component er makkelijk uit te halen?

Lijkt me lastig om het zelf te doen, want je weet natuurlijk nooit echt wat de oriëntatie is van je unit. Maar misschien is er al een vrij betrouwbaar algoritme geschreven (Wanneer die enkel draait blijft hij natuurlijk 1G meten, wanneer er nog iets anders gebeurt wordt het meer dan 1G).
Het hangt een beetje van het type af, maar zoiets heet voor niks een VERSNELLINGSMETER.
Hij meet dus de versnelling, dus de verandering van de snelheid (zoals een piezo element bv)
Je meet dus niet de zwaartekracht, aangezien dat een constante kracht is (en de snelheid dus niet veranderd)
Maar nogmaals, dat hangt van het type accelerometer af (sommigen voldoen dan ook natuurkundig gezien niet helemaal aan die naam)

Het kalibreren/ijken van dergelijke dingen (zeker piezos) is wel een beetje een gedoetje :(

[ Voor 5% gewijzigd door B_FORCE op 01-11-2014 13:34 ]

One World Concepts


Acties:
  • 0 Henk 'm!

  • Stijnb_
  • Registratie: Oktober 2009
  • Laatst online: 17-09 08:36
Ploink schreef op zaterdag 01 november 2014 @ 12:41:
[...]


[...]

Modbus heeft ook nadelen. Het is binair en timing gevoelig en dat maakt implementatie en debuggen moeilijker. Ook heb ik gezien dat industriële implementaties erg brak kunnen zijn.

Gebruik de MAX487, dan passen er 128 op de bus. Ik heb een systeem met zo'n 80 slaves al bijna 12 jaar stabiel draaien.
Adressering is onderdeel van de modbus specificatie. Om het adres van de slave in te stellen gebruik ik simpelweg een blokje met 8 dip switches zodat je snel nieuwe hardware kan pakken, switch posities overnemen en weer doorgaan. Maar dat is nog nooit nodig geweest :Y)

Bij genoemde systeem gebruikte ik overigens geen modbus maar een simpel ascii protocol, ongeveer zoals Advantech dat destijds had. Ik gebruikte simpele PIC16 controllertjes en het hele protocol was maar een klein stukje ASM. De specificatie is heel simpel, kan het wel opzoeken en posten als iemand interesse heeft.
Zou je soms wat meer info kunnen geven over jou opstelling en protocol?

Acties:
  • 0 Henk 'm!

  • D-Three
  • Registratie: Oktober 2001
  • Laatst online: 07:15
DIP switches als adressering lijkt me ook een goed idee. Zo hoef je geen adres in de software te gaan aanpassen, gewoon fysiek instellen en aansluiten.

Intussen heb ik er nog wat verder zitten over nadenken en ik denk toch voor CAN te kiezen omdat het toch zeer robuust is. De aansluiting zal dan gebeuren via een ethernet-gateway. Software upload moet ook ondersteund worden zodat de software van iedere aangesloten node een update via de bus kan krijgen. Allemaal nog theorie ;)

[ Voor 63% gewijzigd door D-Three op 01-11-2014 18:05 ]


Acties:
  • 0 Henk 'm!

  • Ploink
  • Registratie: April 2002
  • Laatst online: 21-08 13:05
Stijnb_ schreef op zaterdag 01 november 2014 @ 16:22:
[...]


Zou je soms wat meer info kunnen geven over jou opstelling en protocol?
Het is een onderzoeksfaciliteit met 80 containers waarin agrarische produkten bewaard kunnnen worden onder verschillende gascondities, N2, CO2, O2 en C2H4.
De massflow controllers staan per 4 naast elkaar met een interface kaart direct op de connectoren gedrukt.

Hier een detail plaatje. Voeding en RS485 wordt gewoon doorgelust en zo staan er 300 van die flow controllers plus een 100 magneetkleppen en een Advantech ADC module op een enkele modbus. De hele bende wordt aangestuurd via de comport van een pc met besturing software, mysql database en website als user interface.
Afbeeldingslocatie: http://i.imgur.com/56fmZPg.jpg

Protocol copy/paste uit de source:
GAS:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
;**********************************************************************
; Protocol discription
;
; Baudrate 19200, valid input characters are: (0-9,A-Z,@,<CR>)
;
; Command syntax:
; @AaCDataCs<CR>
; @ = start of command line marker
; Aa    = device address in HEX, FF=broadcast (never reply with broadcast)
; C = Command code
; Data  = any optional data for the command
; Cs    = checksum over the the previous in HEX
; 
; 
; Reply syntax: 
; +ResultCs<CR>
; -ErrorCs<CR>
; + = start of positive (ok) reply 
; -     = start of negative (error) reply
; Result= optional result of command
; Error = optional error string (Do not report checksum errors)
; Cs    = checksum over the the previous in HEX
;
;----------------------------------------------------------------------


Voor de slave is het dus heel simpel:
- Buffer alleen karakters tussen start en stop char.
- als invalid input char, begin opnieuw
- na stop char, verwerk input
- als niet voor mij, checksum fout, of buffer overflow, begin opnieuw.
- voer commando uit en reply.

Voorbeelden:
cmd: @1FW021234DA<CR> #Aan device 1Fh, Write output 02h value 1234h, checksum is DAh.
Reply: +OK23<CR> #Checksum 23h, eventueel kun je ook nog afzender adres meesturen, maar heb ik niet gedaan

cmd: @1FR02B6<CR> #Aan device 1Fh, Read value 02h, checksum B6h
reply: +02044176<CR> #Waarde 02h is 0441h, checksum 76h
(checksums zijn gegok, heb dat niet uitgerekend :P )

Voor analoge waardes gebruik ik altijd 16bit getallen, indien ADC of DAC minder bits heeft dan is het MSB aligned (kun je later probleemloos een ADC upgraden).
Digitale waardes (solenoids/relais etc) doe ik per 8 (byte), of bij een Write optioneel per bit, dat zie je dan aan de data lengte, een char van 0 of 1.
D-Three schreef op zaterdag 01 november 2014 @ 18:01:
Intussen heb ik er nog wat verder zitten over nadenken en ik denk toch voor CAN te kiezen omdat het toch zeer robuust is.
RS485 gebaseerde protocollen werken doorgaans met een enkele master en meerdere slaves, zo van stuur een opdracht naar slave A en wacht op aantwoord, stuur opdracht naar slave B, etc..... Als er meerdere apparaten tegelijk zouden zenden dan kun je collisions krijgen.
CAN is robuust omdat het collisions kan voorkomen en werkt dus goed met multi-master of peer-to-peer netwerkjes. Voor single-master voldoet RS485 prima.

Acties:
  • 0 Henk 'm!

  • Stijnb_
  • Registratie: Oktober 2009
  • Laatst online: 17-09 08:36
Het engiste dat me tegen houd is dat ik niet echt weet hoe ik er moet aan beginnen om een eigen protocol te schrijven. Daarom dat ik voor modbus ging. Ik zal wat opzoekings werk moeten verrichten om mijn eigen protocol te schrijven voor te communiceren over rs485.

Acties:
  • 0 Henk 'm!

  • Ploink
  • Registratie: April 2002
  • Laatst online: 21-08 13:05
Ploink schreef op zaterdag 01 november 2014 @ 12:41:
[...]
Ik heb een systeem met zo'n 80 slaves al bijna 12 jaar stabiel draaien.
Adressering is onderdeel van de modbus specificatie. Om het adres van de slave in te stellen gebruik ik simpelweg een blokje met 8 dip switches zodat je snel nieuwe hardware kan pakken, switch posities overnemen en weer doorgaan. Maar dat is nog nooit nodig geweest :Y)
Alsof de duivel meeleest, uitgerekend DIT weekend is de eerste slave na 12 jaar stuk gegaan :( Ik haat de maandag :( Gelukkig was vervangen zo gebeurd. :)

Acties:
  • 0 Henk 'm!

  • JDTeunis
  • Registratie: Januari 2011
  • Laatst online: 16-09 09:34
B_FORCE schreef op zaterdag 01 november 2014 @ 13:28:
[...]

Het hangt een beetje van het type af, maar zoiets heet voor niks een VERSNELLINGSMETER.
Hij meet dus de versnelling, dus de verandering van de snelheid (zoals een piezo element bv)
Je meet dus niet de zwaartekracht, aangezien dat een constante kracht is (en de snelheid dus niet veranderd)
Maar nogmaals, dat hangt van het type accelerometer af (sommigen voldoen dan ook natuurkundig gezien niet helemaal aan die naam)

Het kalibreren/ijken van dergelijke dingen (zeker piezos) is wel een beetje een gedoetje :(
Maar hoe meet je een versnelling? Als je geen gegevens hebt over de absolute positie, zul je een kracht moeten meten, en van daaraf de versnelling berekenen. Het lijkt me dus logisch dat je altijd de zwaartekracht zult meten.

Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 09-09 17:48
B_FORCE schreef op zaterdag 01 november 2014 @ 13:28:
[...]

Het hangt een beetje van het type af, maar zoiets heet voor niks een VERSNELLINGSMETER.
Hij meet dus de versnelling, dus de verandering van de snelheid (zoals een piezo element bv)
Je meet dus niet de zwaartekracht, aangezien dat een constante kracht is (en de snelheid dus niet veranderd)
Maar nogmaals, dat hangt van het type accelerometer af (sommigen voldoen dan ook natuurkundig gezien niet helemaal aan die naam)

Het kalibreren/ijken van dergelijke dingen (zeker piezos) is wel een beetje een gedoetje :(
Dat heb je verkeerd. De "zwaartekracht" is geen kracht, maar een versnelling van 9,81 m/s². De kracht die je voelt is de reactiekracht van de aarde op een massa.

Een Accellerometer zal pas 0 aangeven wanneer deze reactiekracht er niet is, kortom in een vrije val.

Acties:
  • 0 Henk 'm!

  • inquestos
  • Registratie: November 2001
  • Laatst online: 07:34
Bedankt, bevestigt wat ik inmiddels ook dacht. :)

Zwaartekracht = constante acceleratie, aardig tegen-intuïtief, hoeveel je het ook op school hebt geleerd.

Ik meet nu gewoon het verschil met de vorige waarde, maar was leuk geweest wanneer je rotatie makkelijk van beweging zou kunnen onderscheiden, maar dat was op korte termijn wat lastig.

Fotografie: | Flickr | Canon 5DII + 20mm + 35mm + 50mm + 100mm || Hardlopen: Strava PR 5km: 20:26 10km: 44:35 HM 1:39:58


Acties:
  • 0 Henk 'm!

  • Stijnb_
  • Registratie: Oktober 2009
  • Laatst online: 17-09 08:36
iemand ervaring met deze rs485 chip. Ik probeer een gewoon serial signaal doormiddel van 2 van deze chips te verzenden naar mijn RPI en dit loopt fout. Haal ik de 2 chips er uit dan werkt het wel iemand die wat opheldering kan geven? Er zit een logic converter tussen de rpi en de Rs485 chip.

Heel het systeem is aangesloten zoals hier besproken.

Code op de arduino:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
byte number = 0;
int led = 13;
int EN = 2;

void setup(){
  Serial.begin(4800);
  pinMode(led,OUTPUT);
  pinMode(EN,OUTPUT);
}

void loop(){
  
  
  digitalWrite(EN,HIGH);
  
    digitalWrite(led,HIGH);
    number = 100;
    Serial.println(number, DEC);
}


Op de RPI draai ik gewoon deze code
code:
1
minicom -b 4800 -o -D /dev/ttyAMA0


maar geeft niets van output.

Edit
Nu werkt het plotseling wel. Als ik op de 'S' toest druk in het minicom scherm wordt er toch een verbinding opgezet tussen de rpi en arduino over rs485.

[ Voor 8% gewijzigd door Stijnb_ op 04-11-2014 05:46 ]


Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 09-09 17:48
inquestos schreef op maandag 03 november 2014 @ 17:13:
Bedankt, bevestigt wat ik inmiddels ook dacht. :)

Zwaartekracht = constante acceleratie, aardig tegen-intuïtief, hoeveel je het ook op school hebt geleerd.

Ik meet nu gewoon het verschil met de vorige waarde, maar was leuk geweest wanneer je rotatie makkelijk van beweging zou kunnen onderscheiden, maar dat was op korte termijn wat lastig.
om rotatie te meten heb je een gyrometer nodig, dat gaat niet met een accelero.

Acties:
  • 0 Henk 'm!

  • B_FORCE
  • Registratie: December 2001
  • Niet online
mcDavid schreef op maandag 03 november 2014 @ 16:43:
[...]

Dat heb je verkeerd. De "zwaartekracht" is geen kracht, maar een versnelling van 9,81 m/s². De kracht die je voelt is de reactiekracht van de aarde op een massa.

Een Accellerometer zal pas 0 aangeven wanneer deze reactiekracht er niet is, kortom in een vrije val.
Dan leren ze blijkbaar vreemde dingen op een HBO opleiding Natuurkunde :( , maaruhm, even opfrissen dan maar?
Wikipedia: Zwaartekracht.

Kracht wordt volgens SI stelsel nog steeds uitgedrukt in newton (N)

Waar jij het over hebt heeft simpelweg de valversnelling.
Wat niks anders is dan een maat hoeveel een voorwerp versnelt in het luchtledige tijdens een vrije val.
Tijdens deze val ondergaat een voorwerp juist een versnelling.

Zoals ik al zei hangt er van de soort meter af hoe deze ermee omgaan.
Zolang bepaalde meters niet bewegen, geven ze geen output.
Er zijn ook (vooral met digitale output) die al gekalibreerd zijn of "zelf kablibrerend" zijn.

zie: http://www.engineersgarage.com/articles/accelerometer?page=2
en: http://www.explainthatstuff.com/accelerometers.html

edit:
Om verwarring een offtopic discussie te voorkomen.
Ik doel dus op hoe bepaalde versnellingsmeters praktisch werken.
Een versnellingsmeter is niets anders dan een massa-veer-dempersysteem.
Zodra daar een kracht op komt te staan, zal de massa daar op reageren natuurlijk.
Er zijn echter meters die geen output geven onder bepaalde omstandigheden.
Doordat ze bijvoorbeeld haaks op kracht niks meten, of omdat bepaalde constantes gecorrigeerd zijn.
Piezoelectrische versnellingsmeters kunnen bv ook geen constante kracht/versnelling meten, maar enkel veranderende.
(in mijn vorige reactie ging ik er even gemakshalve van uit dat het om een piezo ging, maar ik bedenk me ineens dat IC's dat helemaal niet hoeven te zijn :D )

Zoals ik al zei, is het ijken van die dingen soms heel lastig.
Gelukkig zijn de meeste IC al geijkt wanneer ze uit de fabriek komen.

[ Voor 28% gewijzigd door B_FORCE op 04-11-2014 11:46 ]

One World Concepts


Acties:
  • 0 Henk 'm!

  • Sissors
  • Registratie: Mei 2005
  • Niet online
Om te stoppen met het nodeloos ingewikkeld maken: Elke reguliere versnellingsmeter, meet ook de zwaartekracht, omdat ze uiteindelijk gewoon krachten meten. Dat sommige die er digitaal uit proberen te halen, of dat ze een hoogdoorlaatfilter hebben (zoals een piezoelektrische) verandert er niks aan dat hij net zo goed de zwaartekracht meet.

Ga je piezoelektrische maar rustig ronddraaien, door de zwaartekracht zal er dan een output uit komen.

Acties:
  • 0 Henk 'm!

  • B_FORCE
  • Registratie: December 2001
  • Niet online
Sissors schreef op dinsdag 04 november 2014 @ 11:48:
Om te stoppen met het nodeloos ingewikkeld maken: Elke reguliere versnellingsmeter, meet ook de zwaartekracht, omdat ze uiteindelijk gewoon krachten meten. Dat sommige die er digitaal uit proberen te halen, of dat ze een hoogdoorlaatfilter hebben (zoals een piezoelektrische) verandert er niks aan dat hij net zo goed de zwaartekracht meet.

Ga je piezoelektrische maar rustig ronddraaien, door de zwaartekracht zal er dan een output uit komen.
Ik heb in het verleden er veel mee moeten werken (geluidstrillingen/trillingen in vloeren)
Sommige piezo's doen dus niks tot verwaarloosbaar niks.

Wat je theoretisch zegt klopt (hetzelfde haalde ik ook al aan), maar praktisch gezien kan het dus prima zijn dat je output nul, of zo goed als nul is (lees: een factor 20 of meer kleiner oid)

One World Concepts


Acties:
  • 0 Henk 'm!

  • RobV
  • Registratie: Juni 2013
  • Niet online

RobV

Welcome to the grid, Program.

(overleden)
Tijd voor een project reboot. Ik was maanden terug begonnen aan het vervangen van de guts van een Motorola 4500x wearable brick phone (zie plaatje), maar dat had ik even in de ijskast gezet vanwege ophopende frustratie. Wat is er reeds gedaan?

- inhoud verwijderd
- alternatieve 12v accu gevonden
- latching power switch (gecontroleerd aan/uit)
- keyboard decoding
- passend LCD display
- rudimentaire serial IO met GSM module

Fotootjes uit het archief van vorig jaar:

Afbeeldingslocatie: http://i.imgur.com/dTjQ0Ujl.jpg
Afbeeldingslocatie: http://i.imgur.com/hboAw6dl.jpg
Afbeeldingslocatie: http://i.imgur.com/FXDqTmkl.jpg
Afbeeldingslocatie: http://i.imgur.com/zffH7ftl.png
Afbeeldingslocatie: http://i.imgur.com/WfoBeMel.jpg
Afbeeldingslocatie: http://i.imgur.com/100RvSEl.jpg

Wat moet er gedaan?
- opnieuw opbouwen printplaat. Met de vorige klus heb ik zoveel lopen 'knippen/plakken' dat het een behoorlijke rommel is geworden, ik wil even opnieuw beginnen.
- stabiel maken seriele bus, ik heb eigenlijk een scope nodig om te zien wat er mis gaat.
- refactoring Hayes driver (ja ik weet dat er een lib is, maar dit is toch mijn hobby)
- power trimming (zo'n 250mA accu moet toch zeker een maand standby kunnen leveren)
- geluidskwaliteit speaker
- geluidskwaliteit microfoon
- UI tweaks

Lijkt me leuk om dit straks af te hebben. Ook al staat 'ie in de kast en uit; het kost verder niets en ik leer er een hoop van.

 | Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72


Acties:
  • 0 Henk 'm!

  • D-Three
  • Registratie: Oktober 2001
  • Laatst online: 07:15
En wat is de bedoeling precies?? :)
Stijnb_ schreef op zaterdag 01 november 2014 @ 22:31:
Het engiste dat me tegen houd is dat ik niet echt weet hoe ik er moet aan beginnen om een eigen protocol te schrijven. Daarom dat ik voor modbus ging. Ik zal wat opzoekings werk moeten verrichten om mijn eigen protocol te schrijven voor te communiceren over rs485.
Op zich is het gewoon een vraag stellen en een antwoord geven. Zo heb ik ook ooit pc + microcontroller een xyz tafel laten aansturen. Het protocol was simpelweg tekst (ascii). Dan had je commando's als 'x1000' of 'y-3' wat dan sloeg op het aantal stappen dat een bepaalde as moest zetten. Een 'r' commando was lezen 'read' van een bepaalde setting, een 'w' command schrijven van een bepaalde setting, 'a' opvragen van een analoge waarde, ... De microcontroller stuurde dan telkens een bevestiging of foutmelding.

Voordeel is dat het zeer gemakkelijk te debuggen is, je kan de vragen en antwoorden letterlijk lezen. Ook had ik niet altijd het pc-programma nodig om iets te proberen, gewoon commando's tikken via een terminal was perfect mogelijk. Het nadeel aan ascii is dat het wat trager is en zelf een interpreter moet schrijven.

Dit was uiteraard slechts 1 device, voor een bus heb je adressering en zo nodig. Staat reeds mooi in het voorbeeld van Ploink. Het eindteken is <CR> wat simpelweg een 'enter' is, <LF> werd door mij genegeerd. Destijds heb ik het gedaan voor een PIC, ik kan de code nog wel eens opzoeken indien je interesse hebt.

Zelf zou ik het waarschijnlijk niet meer gebruiken omdat ik het nodeloos ingewikkeld wil maken :P

Maar modbus is in principe ook niet slecht, persoonlijk vind ik het wat overkill voor domotica ;) Maar als dat voor jou gemakkelijker is of als je je daar beter bij voelt, moet je het zeker gebruiken!

[ Voor 3% gewijzigd door D-Three op 06-11-2014 09:14 ]


Acties:
  • 0 Henk 'm!

  • Ploink
  • Registratie: April 2002
  • Laatst online: 21-08 13:05
Modbus is ook niet echt DE standaard ofzo, dus wie houdt je tegen om zelf een protocolletje te schrijven dat ook niet compatible is met de rest :D
Wikipedia: List of automation protocols

Acties:
  • 0 Henk 'm!

  • Stijnb_
  • Registratie: Oktober 2009
  • Laatst online: 17-09 08:36
Ploink schreef op donderdag 06 november 2014 @ 09:35:
Modbus is ook niet echt DE standaard ofzo, dus wie houdt je tegen om zelf een protocolletje te schrijven dat ook niet compatible is met de rest :D
Wikipedia: List of automation protocols
hoe verzenden jullie je protocol allemaal in 1 string of byte per byte?

[ Voor 10% gewijzigd door Stijnb_ op 06-11-2014 21:00 ]


Acties:
  • 0 Henk 'm!

  • Ploink
  • Registratie: April 2002
  • Laatst online: 21-08 13:05
Stijnb_ schreef op donderdag 06 november 2014 @ 18:59:
[...]


Ik ben bezig met mijn eigen protocol maar hoe berekenen jullie je checksum?
Ook dat mag je zelf verzinnen natuurlijk. Mijn protocol zet alleen geldige karakters tussen de @ en de <CR> in de buffer, telt dan de ascii waardes van alle karakters behalve de laatste twee bij elkaar op in een byte waarde (dus overflow bits weg gegooid). Die laatste twee bevatten de HEX representatie van de checksum zoals de afzender die berekende. Dan beiden vergelijken en als match dan doe iets.

Dit is een simpele maar niet zo robuuste checksum, verwisselen van karakters bv merk je niet op. Als je het beter wil doen, gebruik CRC.

[ Voor 3% gewijzigd door Ploink op 06-11-2014 21:01 ]


Acties:
  • 0 Henk 'm!

  • Powerblast
  • Registratie: Augustus 2011
  • Laatst online: 18-09 22:07
Hoi iedereen,

Ik heb binnenkort een drietal weken vakantie dus de ideale periode om eens met m'n arduino aan de slag te gaan :). Ik heb nu het volgende op het oog, een R/C "traktor". M'n neefje heeft zo een soort mecano achtige set waarmee je een traktor kan maken met een laadkar erachteraan (soort van lego technics maar dan volledig in metaal). Lijkt me wat dat betreft dus de ideale basis voor eens los te gaan :9 .Ik wil die voor de fun eens voorzien van een motor en die gaan besturen met m'n ps3 controller.

Ik heb echter geen ervaring met motoren op de arduino, eigenlijk tot nu toe alleen maar wat geprutst met leds, schermpjes en sensoren. De vraag is nu wat ik juist nodig heb. Ik dacht zelf aan het volgende:

* 1 dc motor om de achteras te koppelen
* 1 stappenmotor om de richting van de voorwielen te bepalen
* 1 arduino uno (heb ik nog liggen) als dat gaat
* bluetooth module waarschijnlijk voor met de ps3 controller te communiceren niet?
* batterij in de vorm van een batterypack op de traktor

Ik had hierbij nog wat vraagjes.

*Heb ik hiervoor een motorsturing nodig of kan het zonder?
*Zijn er duidelijke voorbeelden te vinden van hoe je een dc motor aan een achteras koppelt? Ik heb nog een dc motortje liggen met een tandwieltje op, maar ik zie eigenlijk niet zo direct hoe ik die deftig kan koppelen aan een as (sorry voor de misschien wat domme vraag, ik ben op dat vlak echt een leek :)). Ik dacht zelf aan het fabriceren van een tandwielconstructie, maar er zijn misschien makkelijkere oplossingen?

Lijkt me een fijn projectje om wat meer kennis van motoren op te doen en ineens m'n neefje blij te maken :)

Acties:
  • 0 Henk 'm!

  • Stijnb_
  • Registratie: Oktober 2009
  • Laatst online: 17-09 08:36
Ploink schreef op donderdag 06 november 2014 @ 21:00:
[...]

Ook dat mag je zelf verzinnen natuurlijk. Mijn protocol zet alleen geldige karakters tussen de @ en de <CR> in de buffer, telt dan de ascii waardes van alle karakters behalve de laatste twee bij elkaar op in een byte waarde (dus overflow bits weg gegooid). Die laatste twee bevatten de HEX representatie van de checksum zoals de afzender die berekende. Dan beiden vergelijken en als match dan doe iets.

Dit is een simpele maar niet zo robuuste checksum, verwisselen van karakters bv merk je niet op. Als je het beter wil doen, gebruik CRC.
Bedankt. Zo doe ik het ook nu gewoon de waardes bij elkaar tellen en de uitkomst is de checksum.

Alleen verzend jij alle data in een keer van je protocol of verzen je alles in een string?

[ Voor 5% gewijzigd door Stijnb_ op 06-11-2014 21:07 ]


Acties:
  • 0 Henk 'm!

  • Ploink
  • Registratie: April 2002
  • Laatst online: 21-08 13:05
Stijnb_ schreef op donderdag 06 november 2014 @ 21:06:
Alleen verzend jij alle data in een keer van je protocol of verzen je alles in een string?
Ik weet niet of ik je vraag goed begrijp. Bij modbus is timing belangrijk omdat pauzes begin en einde van een transmissie markeren.
Met een ascii protocol is het alleen van belang dat het antwoord binnen een bepaalde tijd wordt ontvangen, voordat de master besluit dat de slave niet reageert. Het maakt niet uit of je data buffert en dan alles tegelijk stuurt of in beetjes. Omdat timing minder belangrijk is kun je het eenvoudig over bv TCP tunnelen. Bij modbus heb je daar weer een aparte specificatie voor.

Acties:
  • 0 Henk 'm!

  • SnowDude
  • Registratie: Januari 2002
  • Laatst online: 13-09 18:52
Stomme vraag misschien maar hoe kan ik het beste 12 paralelle leds aan sturen met een PWM uitgang? gewoon met een transistor of met een opamp en transistor?

All electric components run on smoke. If you let the smoke out, they won't work anymore.


Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 09-09 17:48
kan prima met een (of afhankelijk van het vermogen meerdere) mosfets.

Waarom wil je ze overigens parallel zetten en niet (deels) in serie? Scheelt je een hoop weerstanden en daramee ook een hoop stroomverlies.

Acties:
  • 0 Henk 'm!

  • RobV
  • Registratie: Juni 2013
  • Niet online

RobV

Welcome to the grid, Program.

(overleden)
SnowDude schreef op vrijdag 07 november 2014 @ 22:26:
Stomme vraag misschien maar hoe kan ik het beste 12 paralelle leds aan sturen met een PWM uitgang? gewoon met een transistor of met een opamp en transistor?
Stomme vragen zijn er niet. Wel luie vragen. Wat heb je zelf al uitgezocht en bekeken? Ben je al bekend met de verschillen tussen de twee mogelijkheden.

 | Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72


Acties:
  • 0 Henk 'm!

  • SnowDude
  • Registratie: Januari 2002
  • Laatst online: 13-09 18:52
mcDavid schreef op vrijdag 07 november 2014 @ 22:42:
kan prima met een (of afhankelijk van het vermogen meerdere) mosfets.

Waarom wil je ze overigens parallel zetten en niet (deels) in serie? Scheelt je een hoop weerstanden en daramee ook een hoop stroomverlies.
Parallel omdat ik ze wilde voeden van af de 5V lijn, bij nader inzien heb ik ook nog een 12V dat is inderdaad misschien wel wat effectiever, kan ik er 3 in serie zetten. En de leds zijn gerate op 3.1 - 3.6 V
RobV schreef op vrijdag 07 november 2014 @ 22:43:
[...]

Stomme vragen zijn er niet. Wel luie vragen. Wat heb je zelf al uitgezocht en bekeken? Ben je al bekend met de verschillen tussen de twee mogelijkheden.
Ja heel erg bekend, ik heb oorspronkelijk electronica gestudeerd, alleen is dat wel 20 jaar geleden. Mijn analoge kennis is helaas niet meer zo paraat als ik zou willen. Ik doe alles digitaal of als ik wat moet versterken doe ik dat met buizen.

En ja ik ben in dit geval een beetje lui, en normaal kan ik het echt wel zelf uit zoeken, maar dat komt omdat mijn printplaten deze week nog naar de fabriek moeten worden gestuurd. Het is voor mijn klok en draadloze weersstation op basis van nixie buizen. En toen mijn print al zo goed als af was bedacht ik me dat het wel leuk zou zijn als de buizen van achteren verlicht worden met een blauwe LED en aangezien ik nog een PWM output over had had ik zoiets van dat moet mooier kunnen dan alleen simpel aan en uit.

[ Voor 3% gewijzigd door SnowDude op 07-11-2014 23:10 ]

All electric components run on smoke. If you let the smoke out, they won't work anymore.


Acties:
  • 0 Henk 'm!

  • Stijnb_
  • Registratie: Oktober 2009
  • Laatst online: 17-09 08:36
Ik zit met een heel raar probleem.
Gisteren werkte alles perfect nu probeer ik alles opnieuw op dezelfde manier en nu toont mijn arduino de hex code niet die ik verstuur.

Ik probeer via een raspberry data te versturen naar mijn arduino via rs485.
Arduino:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//DFRobot.com
//Compatible with the Arduino IDE 1.0
//Library version:1.1
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
int pin = 2;
byte test;

LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display

void setup()
{
  pinMode(pin, OUTPUT);
  digitalWrite(pin, 0);
  lcd.init();                      // initialize the lcd 
  Serial.begin(9600); // Print a message to the LCD.
  lcd.backlight();
  lcd.print("Hello, world!");
}

void loop() {
  
  if( Serial.available() ) {
    
   lcd.setCursor(0,0);
   lcd.clear();
    
   lcd.print(Serial.read(), HEX);
  }
}


Python on RPI
code:
1
ser.write(hex(255))


maar ik krijg op mijn display deze code "66".
Gisteren kreeg ik nochtans mooi FF.

Acties:
  • 0 Henk 'm!

  • Springuin
  • Registratie: Juli 2002
  • Laatst online: 11-09 20:13
Powerblast, die motoren vragen meer stroom dan je direct uit een arduinopootje kunt halen. Een motorshield is wat je nodig hebt.
Ik had bij mijn meccano vroeger ook wielen waar je een elastiekje in kon laten lopen: een daarvan aan de as, een aan de motor en een elastiekje erom; dat lijkt me de makkelijkste oplossing.

Bluetooth - ps3 controller gaat een uitdaging worden, de meeste bluetooth modules voor microcontrollers doen bluetooth - serieel, de PS3 controller is een HID device. Wellicht is het eenvoudiger om een draadloos toetsenbord met ps2 aansluiting te zoeken, die aan je arduino te verbinden en uit te lezen met de PS2Keyboard library.

Acties:
  • 0 Henk 'm!

  • RobV
  • Registratie: Juni 2013
  • Niet online

RobV

Welcome to the grid, Program.

(overleden)
SnowDude schreef op vrijdag 07 november 2014 @ 23:08:
Ja heel erg bekend, ik heb oorspronkelijk electronica gestudeerd, alleen is dat wel 20 jaar geleden. Mijn analoge kennis is helaas niet meer zo paraat als ik zou willen. Ik doe alles digitaal of als ik wat moet versterken doe ik dat met buizen.

En ja ik ben in dit geval een beetje lui, en normaal kan ik het echt wel zelf uit zoeken, maar dat komt omdat mijn printplaten deze week nog naar de fabriek moeten worden gestuurd. Het is voor mijn klok en draadloze weersstation op basis van nixie buizen. En toen mijn print al zo goed als af was bedacht ik me dat het wel leuk zou zijn als de buizen van achteren verlicht worden met een blauwe LED en aangezien ik nog een PWM output over had had ik zoiets van dat moet mooier kunnen dan alleen simpel aan en uit.
Excuses voor mijn botte tegenvraag. Kennelijk ben je zeer bekwaam. Respect voor het werken met Nixie tubes *O*. De reden dat ik het zo vroeg is dat je meestal een vraag krijgt, dan een paar pingels om het probleem en de situatie helder te krijgen, om er tenslotte achter te komen dat iemand zijn huiswerk niet gedaan heeft/wil doen (RTFM). Ik had er net een paar van dat soort gehad (op andere fora) en helaas kreeg jij de volle laag van mij.

 | Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72


Acties:
  • 0 Henk 'm!

  • SnowDude
  • Registratie: Januari 2002
  • Laatst online: 13-09 18:52
RobV schreef op zaterdag 08 november 2014 @ 21:26:
[...]

Excuses voor mijn botte tegenvraag. Kennelijk ben je zeer bekwaam. Respect voor het werken met Nixie tubes *O*. De reden dat ik het zo vroeg is dat je meestal een vraag krijgt, dan een paar pingels om het probleem en de situatie helder te krijgen, om er tenslotte achter te komen dat iemand zijn huiswerk niet gedaan heeft/wil doen (RTFM). Ik had er net een paar van dat soort gehad (op andere fora) en helaas kreeg jij de volle laag van mij.
Geen probleem, je had ook wel een beetje gelijk het was een luie vraag.

Ik ga het netjes met een mosfet oplossen zodat de stroom altijd gelijk geregeld wordt:

Afbeeldingslocatie: http://i.stack.imgur.com/2Zt5N.png

Dit is niet uit mijn schema, ik moet alleen nog even de juiste componenten uitzoeken en de waardes berekenen.

Ik zal vanavond wel even de complete schema's laten zien van de hele klok

All electric components run on smoke. If you let the smoke out, they won't work anymore.


Acties:
  • 0 Henk 'm!

  • D-Three
  • Registratie: Oktober 2001
  • Laatst online: 07:15
Toch geen pwm?
Stijnb_ schreef op zaterdag 08 november 2014 @ 14:43:
Ik zit met een heel raar probleem.
Gisteren werkte alles perfect nu probeer ik alles opnieuw op dezelfde manier en nu toont mijn arduino de hex code niet die ik verstuur.

Ik probeer via een raspberry data te versturen naar mijn arduino via rs485.
Arduino:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//DFRobot.com
//Compatible with the Arduino IDE 1.0
//Library version:1.1
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
int pin = 2;
byte test;

LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display

void setup()
{
  pinMode(pin, OUTPUT);
  digitalWrite(pin, 0);
  lcd.init();                      // initialize the lcd 
  Serial.begin(9600); // Print a message to the LCD.
  lcd.backlight();
  lcd.print("Hello, world!");
}

void loop() {
  
  if( Serial.available() ) {
    
   lcd.setCursor(0,0);
   lcd.clear();
    
   lcd.print(Serial.read(), HEX);
  }
}


Python on RPI
code:
1
ser.write(hex(255))


maar ik krijg op mijn display deze code "66".
Gisteren kreeg ik nochtans mooi FF.
Bekabeling in orde? Massa verbonden?

Acties:
  • 0 Henk 'm!

  • SnowDude
  • Registratie: Januari 2002
  • Laatst online: 13-09 18:52
Wel pwm, via R2 kan je via pwm de helderheid regelen.De schakeling regeld zich zelf zo dat de spanning over R1 precies 0.7 volt is. Als je wil dat er totaal 20 mA door de led's gaat dan kies je de weerstand heel simpel: 0.7 V / 20 mA = 35 Ohm
[...]

Bekabeling in orde? Massa verbonden?
66 (Hex) is 0110 0110 (Bin) Misschien een timing issue?

ik snap hem al, de ASCII code voor de letter f = 66 hex :) Je applicatie stuurt een ascii f uit. (waarschijnlijk zelfs "ff" maar alleen het eerste of laatste karacter wordt getoond )

[ Voor 95% gewijzigd door SnowDude op 10-11-2014 15:58 ]

All electric components run on smoke. If you let the smoke out, they won't work anymore.


Acties:
  • 0 Henk 'm!

  • Stijnb_
  • Registratie: Oktober 2009
  • Laatst online: 17-09 08:36
SnowDude schreef op maandag 10 november 2014 @ 15:25:
[...]
Wel pwm, via R2 kan je via pwm de helderheid regelen.De schakeling regeld zich zelf zo dat de spanning over R1 precies 0.7 volt is. Als je wil dat er totaal 20 mA door de led's gaat dan kies je de weerstand heel simpel: 0.7 V / 20 mA = 35 Ohm

[...]


66 (Hex) is 0110 0110 (Bin) Misschien een timing issue?

ik snap hem al, de ASCII code voor de letter f = 66 hex :) Je applicatie stuurt een ascii f uit. (waarschijnlijk zelfs "ff" maar alleen het eerste of laatste karacter wordt getoond )
Massa is verbonden.
Ik stuur toch wel degelijk waarde 255.

Acties:
  • 0 Henk 'm!

  • SnowDude
  • Registratie: Januari 2002
  • Laatst online: 13-09 18:52
Weet je dat echt heel zeker?

Weet je zeker dat je niet ergens per ongeluk een string ff uitstuurt?

Of je laat per ongeluk de ascii waarde zien op je scherm.

Ik heb ooit het zelfde gehad, bleek dat ik in plaats van (hex) 255 FFH uit wilde sturen maar dat mijn software dat zag als een string.

[ Voor 29% gewijzigd door SnowDude op 10-11-2014 17:40 ]

All electric components run on smoke. If you let the smoke out, they won't work anymore.


Acties:
  • 0 Henk 'm!

  • Stijnb_
  • Registratie: Oktober 2009
  • Laatst online: 17-09 08:36
Al de code die ik gebruik staat in mijn vorige post.
Heb al eens gekeken en zie niet echt dat ik een string verstuur.

[ Voor 38% gewijzigd door Stijnb_ op 10-11-2014 18:31 ]


Acties:
  • 0 Henk 'm!

  • SnowDude
  • Registratie: Januari 2002
  • Laatst online: 13-09 18:52
Er moet iets gewijzigt zijn in je code. Het kan niet zo zijn dat het ene moment alles elke keer werkt en dat van het een op het andere moment je een consistent ander antwoord krijgt.

Probeer eens 238 decimaal uit te sturen. Dat is EE Hex als je dan 65 als antwoordt krijgt dan weet je dat je inderdaad een ascii code terug krijgt. 65 is ascii "e"

All electric components run on smoke. If you let the smoke out, they won't work anymore.


Acties:
  • 0 Henk 'm!

  • D-Three
  • Registratie: Oktober 2001
  • Laatst online: 07:15
SnowDude schreef op maandag 10 november 2014 @ 15:25:
[...]
Wel pwm, via R2 kan je via pwm de helderheid regelen.De schakeling regeld zich zelf zo dat de spanning over R1 precies 0.7 volt is. Als je wil dat er totaal 20 mA door de led's gaat dan kies je de weerstand heel simpel: 0.7 V / 20 mA = 35 Ohm

[...]


66 (Hex) is 0110 0110 (Bin) Misschien een timing issue?

ik snap hem al, de ASCII code voor de letter f = 66 hex :) Je applicatie stuurt een ascii f uit. (waarschijnlijk zelfs "ff" maar alleen het eerste of laatste karacter wordt getoond )
Goed opgemerkt! :D
Stijnb_ schreef op maandag 10 november 2014 @ 17:29:
[...]


Massa is verbonden.
Ik stuur toch wel degelijk waarde 255.
Dus arduino en rpi zitten op dezelfde massa? Hetzelfde potentiaal is belangrijk bij seriële communicatie.

Opletten trouwens met het versturen van die 255, indien er niks ontvangen is en je doet een serial.read(), ontvang je namelijk een -1. Afhankelijke van one's complement of two's complement, is een negatief getal namelijk 1111110 of 11111111. In het geval van de laatste krijg je dus FF als je die omzet naar een hex!

Er bestaat dus een kans dat als het niet goed werkt je een FF op jouw LCD krijgt :P Belangrijk is om in het begin alles zo simpel mogelijk te houden. Dus niet teveel omzetten en dergelijke. Stuur eens een string door?

edit:
Aha! Ik denk dat ik het gevonden heb, SnowDude heeft het waarschijnlijk bij het rechte eind:
code:
1
ser.write(hex(255))

Dit stuurt de string 0xff naar buiten! Zie https://docs.python.org/2/library/functions.html#hex
Zoals ik zei, opletten met omzetten dus ;)

[ Voor 11% gewijzigd door D-Three op 10-11-2014 21:24 ]


Acties:
  • 0 Henk 'm!

  • SnowDude
  • Registratie: Januari 2002
  • Laatst online: 13-09 18:52
Even een korte update van mijn project.

Ik ben bezig met een klok / weerstation met nixie buizen. Tijdens eerdere projecten met buizen zoals mijn (gedeeltelijk) eigen ontworpen hifi buizen versterker, heb ik regelmatig de zogenaamde Nixie buizen gezien en toen ik vorig jaar voor relatief weinig geld een leuke partij nixie buisjes en drivers kon opkopen heb ik dat dan ook direct gedaan.

Wat zijn nixie buizen?
Een nixie buis is voorloper van de moderne digitale displays. Ze kunnen vaak de decimale cijfers laten zien of bij sommige types wat speciale tekens. In basis is het een glazen buis gevuld met neon. Er in zit een anode in en elk cijfers (of teken) is een aparte kathode. Hierdoor kunnen ze meestal maar 10 verschillende tekens tonen (soms is er een extra aansluiting voor een decimale punt). De en aansturing is relatief simpel, op de anode wordt via een weerstand om de stroom te begrezen een spanning van zo'n 180V gezet. Door de kathodes een voor een aan de massa schakelen lichten de bij behorende cijfers op.

Door dat de cijfers achter elkaar zijn gemonteerd in de buis krijg je een diepte effect, het ene cijfer zit helemaal voor aan terwijl de achterste daar zo'n anderhalve centimeter achter zit.

De aansturing gebeurd meestal met een standaard nixie driver chip: 74141 deze heeft een 4 bits BCD input en een output voor elke aansluiting van de buis.

Voorbeeld van een nixie buisje:
Afbeeldingslocatie: http://upload.wikimedia.org/wikipedia/commons/thumb/4/4f/Nixie2.gif/170px-Nixie2.gif


Waarom staat deze "oude zooi" in het Arduino topic?
Heel simpel, de drivers ondersteunen gewoon 5V ttl logica, een uitgelezen project dus om de boel aan te sturen met een Arduino. Het eerste prototype van mijn klok werd daarom ook aangestuurd door een Arduino nano. In de laatste en definitive versie is uit kosten oogpunt de Arduino nano vervangen door een standaard ATmega 328 (ik moet 3 dezelfde units bouwen en dat scheelt gewoon zon 15 euro per board) maar de software blijf ik schrijven met de Arduino SDK.

Het leuke van de Arduino is uiteraard dat je erg flexibel wordt en veel leuke dingen kan toevoegen, het idee van een simpele klok met 6 digits werd dan ook snel uitgebreid met nog 6 buisjes, een 433MHz ontvanger en een (I2C) barometer. Via de ontvanger kan ik de temperatuur- en luchtvochtigheid gegevens ontvangen van 10 draadloze zenders, ik gebruik de simpele Lacrosse TX3 om dat deze eenvoudig te decoderen is.

Prototype:
Nixie klok

Mainboard:
Voeding
2 DC/DC converters voor de 180V DC (schakelbaar met relais)
Atmel ATMega328
433Mhz ontvanger
Backlight LED control
BMP085 Barometer module
DS3231 RTC module

(klikbaar)
Nixie clock mainboard


Driver en tube board:
12 Nixie tubes
12 BCD Nixie drivers
6 74595 latches
Leds voor decimale punt, min/max en voor de klok

(klikbaar)
Nixie clock driver board

Voor de geïnteresseerden mijn zelfbouw 2 x 10W class A buizen versterker:
Tube amp
Geen kleine jongen kijk maar naar de xbox er onder. Hij is niet helemaal solid state vrij: de gelijkrichting van de hoogspanning wordt wel netjes gedaan met de achterste twee gelijkricht-buizen, maar om wat brom te voorkomen, heb ik de gloeidraden in de voortrap en fase draaier gelijkgericht met diodes en afgevlakt met een condensator.
D-Three schreef op maandag 10 november 2014 @ 21:16:
[...]

edit:
Aha! Ik denk dat ik het gevonden heb, SnowDude heeft het waarschijnlijk bij het rechte eind:
code:
1
ser.write(hex(255))

Dit stuurt de string 0xff naar buiten! Zie https://docs.python.org/2/library/functions.html#hex
Zoals ik zei, opletten met omzetten dus ;)
Dat dacht ik al, maar ik weet niet genoeg van Python en de RPI _/-\o_

[ Voor 8% gewijzigd door SnowDude op 10-11-2014 21:42 ]

All electric components run on smoke. If you let the smoke out, they won't work anymore.


Acties:
  • 0 Henk 'm!

  • Niellz
  • Registratie: Juli 2013
  • Laatst online: 11-01 23:16

Niellz

PSN: Niellzje

Hallo jongens,
Ik zou graag met mijn arduino r3 http://www.samenkopen.net/action_product/687160/293687 < dit motortje aandrijven. Nu is mijn vraag, hoe doe ik dat? Op dezelfde site staan allemaal modules etc. Ik wil graag 4 motoren tegelijk aandrijven. Ik heb de keuze uit deze dingen: http://www.samenkopen.net/action_products/687160/825598

Kan iemand me hiermee helpen? Alvast bedankt!

http://i.picasion.com/resize76/446eb2c88b2df1a089a17a9b8b734465.gif


Acties:
  • 0 Henk 'm!

  • ResuCigam
  • Registratie: Maart 2005
  • Laatst online: 18-09 09:37

ResuCigam

BOFH

Niellz schreef op maandag 17 november 2014 @ 17:50:
Ik zou graag met mijn arduino r3 http://www.samenkopen.net/action_product/687160/293687 < dit motortje aandrijven. Nu is mijn vraag, hoe doe ik dat? Op dezelfde site staan allemaal modules etc. Ik wil graag 4 motoren tegelijk aandrijven. Ik heb de keuze uit deze dingen: http://www.samenkopen.net/action_products/687160/825598
Volgens mij doet deze precies wat jij wilt: http://www.samenkopen.net/action_product/687160/239913

We do what we must because we can.


Acties:
  • 0 Henk 'm!

  • Niellz
  • Registratie: Juli 2013
  • Laatst online: 11-01 23:16

Niellz

PSN: Niellzje

Maar dat is echt een shield, ik wil andere pins ook nog kunnen gebruiken. Met een aparte stroombron.
Laat maar, ik heb het al.

[ Voor 11% gewijzigd door Niellz op 17-11-2014 19:55 ]

http://i.picasion.com/resize76/446eb2c88b2df1a089a17a9b8b734465.gif


Acties:
  • 0 Henk 'm!

  • Promy
  • Registratie: Oktober 2002
  • Laatst online: 18-09 21:40
Ik wil graag met m'n arduino nagaan of de garagepoort open, dicht of in beweging is. Open en dicht is geen probleem dmv een magneetsensor. Bewegen dacht ik met een LDR (lichtgevoelige weerstand) te doen die reageert op de "flashlight". Enige probleem die ik zie is...dat dit een knipperlicht is, met 1sec aan, 1sec uit. Nu kan ik wel schrijven in de arduino dat als er meer dan 1 seconde geen licht was de poort gestopt is, maar ik vroeg me af of er hier een hardwarematige oplossing voor is.
Het schema voor de LDR die ik gebruik is deze zelf dacht ik eventueel aan een condensator, maar ik heb geen idee waar deze te plaatsen en hoeveel uF het beste is.

Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 09-09 17:48
Kun je niet gewoon aannemen dat alles tussen open en dicht altijd "in beweging" is?

Acties:
  • 0 Henk 'm!

  • Ploink
  • Registratie: April 2002
  • Laatst online: 21-08 13:05
Promy schreef op maandag 17 november 2014 @ 21:07:
Ik wil graag met m'n arduino nagaan of de garagepoort open, dicht of in beweging is. Open en dicht is geen probleem dmv een magneetsensor. Bewegen dacht ik met een LDR (lichtgevoelige weerstand) te doen die reageert op de "flashlight". Enige probleem die ik zie is...dat dit een knipperlicht is, met 1sec aan, 1sec uit. Nu kan ik wel schrijven in de arduino dat als er meer dan 1 seconde geen licht was de poort gestopt is, maar ik vroeg me af of er hier een hardwarematige oplossing voor is.
Het schema voor de LDR die ik gebruik is deze zelf dacht ik eventueel aan een condensator, maar ik heb geen idee waar deze te plaatsen en hoeveel uF het beste is.
Indien de deur zo'n grote stalen trekveer heeft, zet een stevige s-type load cell er tussen en dan heb je een maat voor hoever de deur open staat.

Acties:
  • 0 Henk 'm!

  • SnowDude
  • Registratie: Januari 2002
  • Laatst online: 13-09 18:52
De geek manier (dus te moeilijk :)) is een kabel aan de bovenhoek van de garage deur, en dan via een katrol naar een contra gewichtje. En dan gaatjes in het katrol wieltje maken en met een ir led en sensor de beweging van de katrol meten. :)

Maar even serieus, met een triple axis accel (g) sensor of gyro sensor op de deur kan je het wel meten, kabel lengte kan eventueel een issue worden.

G sensor is al genoeg, aangezien de zwaarte kracht volgens Einstein een constante versnelling is is met een 3 axis g sensor heel precies de hellingshoek te meten.

[ Voor 19% gewijzigd door SnowDude op 17-11-2014 22:35 ]

All electric components run on smoke. If you let the smoke out, they won't work anymore.


Acties:
  • 0 Henk 'm!

  • Promy
  • Registratie: Oktober 2002
  • Laatst online: 18-09 21:40
mcDavid schreef op maandag 17 november 2014 @ 21:25:
Kun je niet gewoon aannemen dat alles tussen open en dicht altijd "in beweging" is?
Nee, want je kan de poort ook stoppen halverwege. Dan is het niet open of dicht, maar toch niet in beweging. Het flashlight werkt enkel als de poort beweegt en is uit anders, dus leek me dit de meest eenvoudige methode...(wel mooi om te zien dat er nog verschillende 'moeilijker' methodes zijn ;)
Hoeveel ze open is kan ik wel timen (komt niet zo nauw), reset toch altijd bij volledig open of volledig dicht.

Acties:
  • 0 Henk 'm!

  • JDTeunis
  • Registratie: Januari 2011
  • Laatst online: 16-09 09:34
Ik neem aan dat de deur dmv een motor open en dicht wordt gedaan. Kun je dan niet gewoon kijken of de motor ingeschakeld is (door een spanning te meten)? Lijkt me me de makkelijkste en meest robuuste oplossing.

Acties:
  • 0 Henk 'm!

  • Ploink
  • Registratie: April 2002
  • Laatst online: 21-08 13:05
Je kan ook het aantal rotaties van de motor as tellen met een reflectieve lichtsensor, hall sensor, reed schakelaar, oid.

Acties:
  • 0 Henk 'm!

  • D-Three
  • Registratie: Oktober 2001
  • Laatst online: 07:15
Trekkoordencoder? :)

Acties:
  • 0 Henk 'm!

  • RobV
  • Registratie: Juni 2013
  • Niet online

RobV

Welcome to the grid, Program.

(overleden)
Ik zou graag mijn circuit willen beveiliging tegen mijn eigen stomme fouten. (kortsluiting, zwarte rook). Ik zat te denken aan het plaatsen van een of meer zekeringen in het circuit. Nou heb ik ergens gehoord van SMD resettable fuses, maar zijn die er ook voor through-hole, en hoe kan ik die het beste gebruiken?

edit: gevonden, nu nog op zoek naar advies.

[ Voor 19% gewijzigd door RobV op 18-11-2014 21:00 ]

 | Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72


Acties:
  • 0 Henk 'm!

  • D-Three
  • Registratie: Oktober 2001
  • Laatst online: 07:15
Hou er wel rekening mee dat zo'n ding een bepaalde weerstand heeft. Kan voor bepaalde circuits wel belangrijk zijn om te weten ;)

Wat wil je beveiligen? Jouw volledige arduino? Bekijk anders ook eens de Ruggeduino (of de schema's er van om ideetjes op te doen): http://www.ruggedcircuits.com/ruggeduino/

Acties:
  • 0 Henk 'm!

  • RobV
  • Registratie: Juni 2013
  • Niet online

RobV

Welcome to the grid, Program.

(overleden)
Nee niet een arduino, wel een projectje op basis van een minimal arduino (dus atmega328p + aanhangsels). Schema is in wording. Het belangrijkste is dat een kortsluiting geblokt wordt.

 | Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72


Acties:
  • 0 Henk 'm!

  • RobV
  • Registratie: Juni 2013
  • Niet online

RobV

Welcome to the grid, Program.

(overleden)
Nieuwe vraag: met een arduino mini 3v3, mag je daar een 5v serial ftdi usb aan hangen (om een sketch tw uploaden) of zegt ie dan pffft? Ik vraag dat omdat ik geen 3v3 usb2serial kan vinden

 | Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72


Acties:
  • 0 Henk 'm!

  • klaboem
  • Registratie: April 2010
  • Laatst online: 22-08 11:39
Ik heb aan aan mijn arduino mini pro clones (3,3v) gewoon een usb kabel (FTDI) of 5v voeding hangen. Dit is nog nooit een probleem geweest.

[ Voor 0% gewijzigd door klaboem op 28-11-2014 16:57 . Reden: typo ]


Acties:
  • 0 Henk 'm!

  • Raven
  • Registratie: November 2004
  • Niet online
RobV schreef op vrijdag 28 november 2014 @ 16:28:
Nieuwe vraag: met een arduino mini 3v3, mag je daar een 5v serial ftdi usb aan hangen (om een sketch tw uploaden) of zegt ie dan pffft? Ik vraag dat omdat ik geen 3v3 usb2serial kan vinden
Dan zoek je niet goed, 3.3v ftdi kabels/adapters zijn er wel ;) Zie bijv. https://www.sparkfun.com/products/9873 En wat dichter bij de deur: https://www.iprototype.nl...ers/ftdi-usb-adapter-3.3V

After the first glass you see things as you wish they were. After the second you see things as they are not. Finally you see things as they really are, and that is the most horrible thing in the world...

Oscar Wilde


Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 09-09 17:48
Raven schreef op vrijdag 28 november 2014 @ 17:04:
[...]

Dan zoek je niet goed, 3.3v ftdi kabels/adapters zijn er wel ;) Zie bijv. https://www.sparkfun.com/products/9873 En wat dichter bij de deur: https://www.iprototype.nl...ers/ftdi-usb-adapter-3.3V
Met deze kun je zelf kiezen of je 3v3 of 5v wilt: http://www.bitwizard.nl/shop/usb-boards/usb-uart-ftdi

Maar het maakt niet uit, een 3v3 arduino is fysiek het zelfde als een 5v arduino. Kun je gewoon op 5V mee interfacen dus. Je moet alleen oppassen als je andere 3v3 componenten aangesloten hebt.

Acties:
  • 0 Henk 'm!

  • RobV
  • Registratie: Juni 2013
  • Niet online

RobV

Welcome to the grid, Program.

(overleden)
Bedankt, ik moet inderdaad beter zoeken volgende keer. 8)7

 | Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72


Acties:
  • 0 Henk 'm!

  • almightyarjen
  • Registratie: Maart 2002
  • Laatst online: 07:48

almightyarjen

When does the hurting stop?

Ik heb even jullie hulp nodig bij een vaag probleem. Ik heb een programma geschreven voor een treinenkruising: sensor1 checkt of er een trein is op het spoor wat voorrang heeft. Zodra dat het geval is wordt er een interruptfunctie (sensor1ISR) uitgevoerd en wordt een deel van het spoor wat niet voorrang heeft voor de kruising uitgeschakeld (track1). Bij track1 staat sensor2: als deze gedurende de deactivatie van track1 een trein ziet (die dus stil staat) wordt een deel van het spoor voor track1 ook uitgeschakeld (track2) om achteropkomende treinen te stoppen. Daarna worden ze met een delay er tussen weer gestart. Het starten van een trein gebeurt met een FOR loop met daarin een analogwrite en een delay functie.

De betreffende delen van de code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
void loop()
{
  if (sensor1_activated) //track1 is disabled
  {
    if (millis() > millisEnd1) //waiting time for track 1 has expired
    {
      setSign1_Green();
      startTrack1();  //start track 1 with PWM 
      sensor1_activated=false;
    }
  }
  
  if (sensor2_activated) //there's a train waiting on track 1
  {
    if (millis() > millisEnd2) //waiting time for track 2 has expired
    {
      setSign2_Green();
      startTrack2();  //start track 2 with PWM
      sensor2_activated=false;
    } 
  }  
  delay(100);
}

void startTrack1()
{
  for (int i=0; i<SPEED_MAX; i++) //voer snelheid op tot SPEED_MAX
  {
    analogWrite (TRACK1EN, i); //i%
    delay (10);
  }
}

void startTrack2()
{
  for (int i=0; i<SPEED_MAX; i++) //voer snelheid op tot SPEED_MAX
  {
    analogWrite (TRACK2EN, i); //i%
    delay (10);
  }    
}

void sensor1ISR()
{
  Serial.println ("Sensor 1 ISR");
  delay(100);  
  sensor1_activated=true;
  setSign1_Red();
  digitalWrite (TRACK1EN, 0); //shutdown track near crossing
  millisEnd1=millis()+delay1;
  millisEnd2=millisEnd1+delay2;    
}

void sensor2ISR()
{
  Serial.println ("Sensor 2 ISR");  
  delay(100);  
  if (sensor1_activated) //track1 is already disabled
  {
    sensor2_activated=true;    
    setSign2_Red();
    digitalWrite (TRACK2EN, 0); //shutdown track2    
  }
}


Het zaakje werkt allemaal prima in een arduino Uno. Maar als ik de chip verplaats naar een eigen gemaakte PCB, dan veroorzaakt de delay in StartTrack1() en StartTrack2() geheel random dat het programma soort blijft hangen. Dit gebeurt alleen als je de sensor activeert als het programma in die delay zit. Hier ben ik achter gekomen door de rest van de code in StartTrackX() weg te commenten.

Ik kan dit probleem tackelen door voor de FOR loop een noInterrupts() commando te geven en na de FOR loop weer Interrupts() neer te zetten. Dan werkt het programma ook perfect in de eigen gemaakte PCB.

Maar waarom??? Heeft iemand een idee? :? Ik had al zitten kijken naar het schematic van de Uno en het enige verschil wat ik zag was dat er twee soort van 1k pull-ups op de lijnen van de interrupts zitten. Deze zijn ter bescherming. Tegen beter weten in heb ik dit getest maar dit had dus geen effect. Ik kan er gewoon niet bij dat een delay functie het wel in de arduino zelf doet, maar niet op een eigen gemaakte PCB.. Iemand een idee?

schema van de pcb indien nodig:
Afbeeldingslocatie: http://i.imgur.com/lOYY9nd.png

Patreon | Main Youtube | Work In Progress Youtube


Acties:
  • 0 Henk 'm!

  • RobV
  • Registratie: Juni 2013
  • Niet online

RobV

Welcome to the grid, Program.

(overleden)
ik wil eerst even zeggen: delay() hoort niet in een interrupt. En wat je hier in een interrupt doet, kan prima in de normale loop() op basis van de blink-without-delay methode, zoals je nu ook algebruikt voor de timeouts.

de pullups heb je nodig, tenzij je de interne pullup aanzet mbt setMode(pin, INPUT_PULLUP);

los daarvan kan ik maar een ding bedenken: heb je je fuses goed staan op je zelfbouw-atmega?

 | Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72


Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 09-09 17:48
De precieze theorie moet ik je verschuldigd blijven maar het is iig NOOIT de bedoeling om delays te gebruiken in je interrupt routines. Dit zou ook gewoon niet moeten werken. Stel je voor dat de sensor een paar keer bounced, dan wordt je ISR zo tig keer aangeroepen en kan je code inderdaad zomaar blijven hangen of nare bugs geven.
In plaats daarvan kun je beter in je ISR alleen een vlaggetje zetten en de verdere logica in je loop afhandelen.

In jouw geval kun je je zelfs afvragen of je uberhaupt wel interrupts moet gebruiken, ipv gewoon in je loop te checken of de sensoren hoog zijn. Moet je alleen wel die delays eruit slopen.

Acties:
  • 0 Henk 'm!

  • RobV
  • Registratie: Juni 2013
  • Niet online

RobV

Welcome to the grid, Program.

(overleden)
^^ great minds think alike, lol

 | Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72


Acties:
  • 0 Henk 'm!

  • almightyarjen
  • Registratie: Maart 2002
  • Laatst online: 07:48

almightyarjen

When does the hurting stop?

RobV schreef op woensdag 03 december 2014 @ 10:14:
ik wil eerst even zeggen: delay() hoort niet in een interrupt. En wat je hier in een interrupt doet, kan prima in de normale loop() op basis van de blink-without-delay methode, zoals je nu ook algebruikt voor de timeouts.

de pullups heb je nodig, tenzij je de interne pullup aanzet mbt setMode(pin, INPUT_PULLUP);

los daarvan kan ik maar een ding bedenken: heb je je fuses goed staan op je zelfbouw-atmega?
Ik gebruik ook geen delays in de interrupt routine: in de routine wordt slechts een volatile boolean geset en in de loop van het programma wordt hiernaar gekeken.

Fuses had ik nog nooit van gehoord, net ff op gegoogled. Dat ga ik vanavond even proberen...

Edit: die delays die in de ISR's staan had ik er ff ingezet voor testdoeleinden: overal waar ik serial.print had neergezet had ik zonder na te denken een delay achter gezet, bij de ISR was dat niet handig. Maar ook zonder die delays doet het programma het stand alone dus niet.

Edit 2: Even gekeken naar die fuses maar volgens mij staat dat standaard allemaal wel goed. Ik heb wel eerder een standalone arduino gebruikt zonder fuses in te stellen, nooit problemen gehad...

[ Voor 23% gewijzigd door almightyarjen op 03-12-2014 10:37 ]

Patreon | Main Youtube | Work In Progress Youtube


Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 09-09 17:48
En in die functies (setSign1_Red(); enzo) gebeurt ook niets?

offtopic: zo te zien heb je 4? functies die vrijwel het zelfde doen, zou je niet gewoon één functie maken waar je een paar parameters aan meegeeft? setSign(1, 'red') ofzo...

Acties:
  • 0 Henk 'm!

  • almightyarjen
  • Registratie: Maart 2002
  • Laatst online: 07:48

almightyarjen

When does the hurting stop?

mcDavid schreef op woensdag 03 december 2014 @ 10:50:
En in die functies (setSign1_Red(); enzo) gebeurt ook niets?

offtopic: zo te zien heb je 4? functies die vrijwel het zelfde doen, zou je niet gewoon één functie maken waar je een paar parameters aan meegeeft? setSign(1, 'red') ofzo...
Nee, in die functies wordt alleen een digitalwrite toegepast, zonder delay. En je hebt gelijk: ik kan er idd net zo goed één functie van maken :)

Patreon | Main Youtube | Work In Progress Youtube


Acties:
  • 0 Henk 'm!

  • RobV
  • Registratie: Juni 2013
  • Niet online

RobV

Welcome to the grid, Program.

(overleden)
Ik zag de delays in de ISR staan. Misschien is het handig volgende keer om je volledige code te plaatsen, incl includes en globale variabelen. En dan zonder de extra debugging regels.

Serial kun je ook niet gebruiken in een ISR. Daarvan krijg je conflicts omdat serial ook werkt met interrupts.

 | Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72


Acties:
  • 0 Henk 'm!

  • Ploink
  • Registratie: April 2002
  • Laatst online: 21-08 13:05
almightyarjen schreef op woensdag 03 december 2014 @ 10:26:
[...]

Ik gebruik ook geen delays in de interrupt routine: in de routine wordt slechts een volatile boolean geset en in de loop van het programma wordt hiernaar gekeken.

Fuses had ik nog nooit van gehoord, net ff op gegoogled. Dat ga ik vanavond even proberen...

Edit: die delays die in de ISR's staan had ik er ff ingezet voor testdoeleinden: overal waar ik serial.print had neergezet had ik zonder na te denken een delay achter gezet, bij de ISR was dat niet handig. Maar ook zonder die delays doet het programma het stand alone dus niet.
Delay in een ISR is idd geen goed idee. Een print kan ook voor delay zorgen als het niet geheel gebufferd wordt. Hoe groot de transmit buffer is voor arduino weet ik niet.

Een procedurele programmeerstijl is mogelijk niet ideaal voor een verkeersregeling. Vroeger op de HTS gebruikten we daar een PLC voor die we in Ladder logic programmeerden. Zo hebben we een liftbesturing gemaakt en een kruispunt voor een pallet transport baan. Op de arduino kan dat ook als je gewoon IF, AND en OR functies gebruikt in een loop.
In de loop zelf moet je juist geen delay zetten, want als je wacht dan doe je niks anders en mis je de 2e trein die op de eerste gaat botsen ;)
Een delay kun je simpel realiseren met software timers die je aftelt in de timer tick ISR:
code:
1
2
if (timer1!=0) timer1--;
if (timer2!=0) timer2--;


en in je hoofdlus:
code:
1
2
3
4
while (1) {
  if (trein gedetecteerd) timer1=100;
  if (timer1!=0) stoplicht=ROOD; else stoplicht=GROEN; 
}

Dus, trein komt en licht gaat op rood, 100 ticks nadat de trein voorbij de sensor is gaat hij weer op groen. Zo kun je een heleboel van dit soort functies in een lus proppen en een complete kruispunt besturing maken

edit: je kan zelfs zover gaan dat je helemaal niets meer in je hoofdlus zet en alles in je ISR gooit die bv 100x per seconde wordt uitgevoerd. Je moet dan wel heel goed oppassen dat een iteratie nooit meer dan 10ms duurt, maar door de consistente timing is het simpel om met tellertjes te werken voor tijd afhankelijke zaken.
Edit 2: Even gekeken naar die fuses maar volgens mij staat dat standaard allemaal wel goed. Ik heb wel eerder een standalone arduino gebruikt zonder fuses in te stellen, nooit problemen gehad...
Bij een nieuwe chip staat default de CKDIV8 fuse aan wat de klok door 8 deelt. Als je die uit zet dan is je atmega dus 8x zo snel. Verder is het altijd aan te raden de brown-out in te schakelen.

[ Voor 6% gewijzigd door Ploink op 03-12-2014 15:10 ]


Acties:
  • 0 Henk 'm!

  • almightyarjen
  • Registratie: Maart 2002
  • Laatst online: 07:48

almightyarjen

When does the hurting stop?

Thanks Ploink, ik zal er vanavond ff naar kijken! d:)b

Patreon | Main Youtube | Work In Progress Youtube


Acties:
  • 0 Henk 'm!

  • Frozen
  • Registratie: Oktober 2010
  • Laatst online: 25-08 16:09

Frozen

2e Reviewer van het Jaar

Ik ben voor de fun een projectje begonnen waarmee ik een mystery box van call of duty wil maken. Mensen raadde mij aan om dan met een arduino aan de slag te gaan. Persoonlijk heb ik wel eens wat van arduino gehoord en heb mezelf ook ingelezen: http://arduino.cc/en/Guide/Windows

Kort geschreven moet het dit kunnen::
detecteren wanneer er een knop is ingedrukt
ledjes op bepaalde momenten laten braden in een bepaalde kleur
Muziekje afspelen vanaf een SD kaart via simpele computer speakertjes (http://arduino.cc/en/Reference/Audio installeren?)

Dit zijn de modi::
Afbeeldingslocatie: http://snag.gy/A1UPG.jpg

Voor zover ik nu heb gezien heb ik dus nodig:
  • Arduino incl. draadjes
  • ledjes
  • sd kaart reader
  • plugje voor speakers, het geluid moet namelijk door een setje computerspeakers komen.
Ondertussen heb ik een tutorial gevonden waarin wordt uitgelegd hoe je wav files kan afspelen vanaf de arduino: http://maxoffsky.com/maxo...ino-uno-and-microsd-card/

Nu zat ik dus te kijken op ebay om een setje incl. arduino te kopen, maar ik vind het erg lastig om er 1 te kiezen.
Op mijn blog gaf iemand mij dit:
http://www.dx.com/nl/p/di...lored-297567#.VH7VSTGG-FU
Afbeeldingslocatie: http://img.dxcdn.com/productimages/sku_297567_1.jpg

Een maat van mij vertelde me dit::
Ik denk een arduino met mp3 shield. Dit voorkomt dat je meerdere platformen moet programmeren/synchen.
Verder simpele mosfet voor de 24 leds. De knipper leds via pins en simpele code.
Ik zou een magnetsiche schakelaar nemen die sluit als de kist dicht is. Dit is ook een simpele programmering.
Er is echt zo veel keuze dat ik niet weet wat ik allemaal mee moet bestellen, en wat ik überhaupt moet bestellen. Zouden jullie mij hierover willen adviseren aub?

[ Voor 18% gewijzigd door Frozen op 03-12-2014 22:05 ]

Voeg me gewoon toe op LinkedIn, iedereen is welkom!


Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 09-09 17:48
Zo'n setje is inderdaad wel handig. Een bosje RGB LED's (of ledstrip) is misschien wel een goeie aanvulling.

Ik zou je aanraden niet te lang te pijnzen, gewoon bestellen. Het gaat er (zeker in deze fase) niet om iedere cent zo efficiënt mogelijk te besten. Zo duur is het spul allemaal niet als je het van eBay af haalt, en je komt er toch pas gaandeweg achter hoe je alles het beste kunt gebruiken.

Ohja vergeet het droogijs niet voor de rookeffecten ;)

Acties:
  • 0 Henk 'm!

  • Frozen
  • Registratie: Oktober 2010
  • Laatst online: 25-08 16:09

Frozen

2e Reviewer van het Jaar

mcDavid schreef op woensdag 03 december 2014 @ 23:02:
Zo'n setje is inderdaad wel handig. Een bosje RGB LED's (of ledstrip) is misschien wel een goeie aanvulling.

Ik zou je aanraden niet te lang te pijnzen, gewoon bestellen. Het gaat er (zeker in deze fase) niet om iedere cent zo efficiënt mogelijk te besten. Zo duur is het spul allemaal niet als je het van eBay af haalt, en je komt er toch pas gaandeweg achter hoe je alles het beste kunt gebruiken.

Ohja vergeet het droogijs niet voor de rookeffecten ;)
Is het niet handiger om eerst te kijken welke het nuttigst is en het meeste bang4buck geeft, dan maar gewoon één te kopen?

Voeg me gewoon toe op LinkedIn, iedereen is welkom!


Acties:
  • 0 Henk 'm!

  • Pizza_Boom
  • Registratie: Juli 2012
  • Laatst online: 03:24
Mwah, als je al die zooi los moet gaan kopen loop je ook al snel richting de 20 euro. Ik zou me er niet zo druk om maken, vooruit, straks bespaar je 2 euro, of krijg je bij een ander 5 breadboard stekkertjes extra. Geloof mij, als het je eenmaal lukt, ga je nog een hoop extra kopen. :P

Verder is, zoals al gezegd, op eBay shoppen erg leuk. Staan vaak leuke hebbedingetjes voor heel weinig (Chinese zooi), moet je alleen wel geduld hebben (verzenden kan zomaar 5-6 weken duren).

[ Voor 25% gewijzigd door Pizza_Boom op 04-12-2014 01:02 ]


Acties:
  • 0 Henk 'm!

  • Icekiller2k6
  • Registratie: Februari 2005
  • Laatst online: 17-09 20:02
wat heb je al nodig
- een arduino -> zit in pakket
- breadboard -> zit in pakket
- wires -> zit in pakket
- leds -> zit in pakket
- weerstanden - zit in pakket
- buzzers -> kun je tijdens coderen tijdelijk gebruiken als Muziek af te spelen puur voor te testen
- lichtsensor - zien of de doos open is? ik zou zelf voor een magnetisch relay van gamma gaan.. maar voor code te schrijven prima als 0 1 test
- battery pack -> ook nodig als je het zonder pc werkt gebruiken
- denk dat ik daar ook een 74l zie voor poorten uit te breiden, handig voor leds ....

nog nodig
- extra leds - 1000 stuks is 22 usd, 100 8 usd ofzo (pm als je link wilt..)
- extra weerstanden
- doos zelf
- magnetisch relay
- iets voor muziek af te spelen

MT Venus E 5KW (V151) P1 HomeWizard | Hackerspace Brixel te Hasselt (BE) - http://www.brixel.be | 9800X3D, 96GB DDR5 6000MHZ, NVIDIA GEFORCE 4090, ASRock X670E Steel Legend, Seasonic GX1000


Acties:
  • 0 Henk 'm!

Verwijderd

Ik zou beginnen met een Arduino Uno R3 met daarbij:

- breadboard 830 contacten
- setje Jumper Wires (65)
- BB power module (je kan nl niet alles voeden vanuit je Arduino board)
- Wat LEDs met serie R's en wat R's voor pull-Up en -Down
- wat schakelaars (moment)

En verder bestellen bij Chinese sites wat je interesse heeft mbt je projecten:

- Temperatuur & vocht
- Bluetooth / ESP8266 WiFi Module
- Serieel (PCF8574) LCD module
- etc

Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 09-09 17:48
Ohja als je de keuze hebt zou ik voor een Leonardo gaan ipv een Uno. Alleen maar voordelen.

Acties:
  • 0 Henk 'm!

  • Frozen
  • Registratie: Oktober 2010
  • Laatst online: 25-08 16:09

Frozen

2e Reviewer van het Jaar

Okee heren bedankt. Dan zal ik vandaag bestellen, over de leonardo heb ik nog niets gelezen. Ik moet daarvoor nog nadere investegatie verrichten hoe de gewone R3 zich verhoudt t.o.v. de leonardo B)

[ Voor 14% gewijzigd door Frozen op 04-12-2014 13:08 ]

Voeg me gewoon toe op LinkedIn, iedereen is welkom!


Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 09-09 17:48
Hij heeft meer mogelijkheden, maar voor wat jij er mee wilt doen zal je daar nog niet zo veel aan hebben. Dus als je een mooi pakketje met uno hebt, is dat ook prima

Acties:
  • 0 Henk 'm!

  • Frozen
  • Registratie: Oktober 2010
  • Laatst online: 25-08 16:09

Frozen

2e Reviewer van het Jaar

Ik heb dus nog niet besteld. De reden is omdat ik niet weet of de arduino wel "muziek" af kan spelen. Hij zal ongetwijfeld voldoen voor de ledjes, maar of hij ook muziek af kan spelen...

Ik heb een shield gevonden, maar of ik daar nou vertrouwen in moet hebben?
http://www.geeetech.com/a...d-with-tf-card-p-604.html (€15,- op ebay)

reviewtje op amazon gevonden: http://www.amazon.com/Gee...00AK7P274#customerReviews

[ Voor 25% gewijzigd door Frozen op 06-12-2014 03:15 ]

Voeg me gewoon toe op LinkedIn, iedereen is welkom!


Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 09-09 17:48
Met zo'n shield zul je prima MP3 af kunnen spelen. Het zal misschien geen audiofiele HIFI zijn maar dat lijkt me niet nodig.
Zonder audioshield zou een arduino hooguit een pieptoon kunnen produceren.

Acties:
  • 0 Henk 'm!

  • Frozen
  • Registratie: Oktober 2010
  • Laatst online: 25-08 16:09

Frozen

2e Reviewer van het Jaar

mcDavid schreef op zaterdag 06 december 2014 @ 11:17:
Met zo'n shield zul je prima MP3 af kunnen spelen. Het zal misschien geen audiofiele HIFI zijn maar dat lijkt me niet nodig.
Zonder audioshield zou een arduino hooguit een pieptoon kunnen produceren.
Via een veiling op ebay heb ik het shield gewonnen voor 11 dollar (9 euro). Goede deal! :D
Ik ga dus nu bestellen:
$4.55 ATmega328P CH340G UNO R3 Board & USB Cable +7 Gilded Pin for Arduino DIY M2
$1.62 100 5mm yellow led (anode leds)
$1.82 100 5mm white led (anode leds)
$2.61 MB-102 breadboard 830
$1.55 65 male to male wires
$1.28 40 male to female wires
$0.99 10 5mm uv/purple led (anode leds)
$0.99 MB102 breadboard power supply module
------
$15.31 dollar (ik heb bij elke de goedkoopste op ebay genomen)

Nu moet ik alleen nog wat randapparatuur erbij halen, zoals buzzers en een magnetische schakelaar/drukknop. :D

Voeg me gewoon toe op LinkedIn, iedereen is welkom!


Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 09-09 17:48
Ik zou lekker zo'n pakketje nemen. Als je los bestelt: vergeet je weerstanden niet! En een paar mosfets ofzo als je meerdere leds tegelijk wilt kunnen schakelen.

En hoe wil je die leds installeren? Is het niet makkelijker gewoon ledstrip te nemen? Scheelt je heeeeeel veel soldeer en plakwerk en geeft waarschijnlijk een mooier resultaat.
Pagina: 1 ... 65 ... 96 Laatste