Rekenen met sinus in microcontroller

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Rene2322
  • Registratie: April 2007
  • Laatst online: 22:09
Met beperkte kennis van elektronica (werktuigbouwer) tracht ik me in te lezen in de mogelijkheden om zon en maan te simuleren.

RTC op microcontroller --> PWM signaal (led dimmer) --> LEDdriver --> led array

Simpel gezegd weet ik dat zon en maan met een bekende frequentie zichtbaar zijn. Een eenvoudige sinusbeweging volstaat in mijn geval.

Aan de hand van de timestamp van de RTC (nog geen idee wat voor waarde ik hieruit haal) zou ik graag in formulevorm de zichtbaarheid van zon en maan berekenen.

Mijn vraag: kun je met een microcontroller een formule met sinusfunctie berekenen...? Mijn zoekpogingen op Google resulteren enkel in sinus-output resultaten.

Acties:
  • 0 Henk 'm!

  • Ulster Seedling
  • Registratie: December 2007
  • Laatst online: 29-05 10:43

Ulster Seedling

“Middelgrote appel”

In wat voor taal/omgeving programmeer je? Als je C gebruikt zit in math.h gewoon de sin functie.

Mocht die functie om wat voor reden niet aanwezig zijn, dan zou je een eigen implementatie daarvan moeten gebruiken. In C is deze zo beschikbaar.

“(…) met een rode blos op een geelgroene ondergrond.” Volgens Wikipedia tenminste.


Acties:
  • 0 Henk 'm!

  • Techneut
  • Registratie: September 2007
  • Niet online
Alleen één puntje, de cyclus van zon en maan is niet zuiver sinusvormig, maar bevat afwijkingen daarvan, alleen al door de elipsvormige baan. Als je dat niet erg vindt en genoegen neemt met ongeveer is het natuurlijk prima. Maar houd er wel rekening mee.
Als je zoiets onderneemt, dan weet je trouwens denk ik ook de formules wel en zal je bij het doorrekenen ook wel zien hoe groot het hele jaar door deze afwijkingen zijn alsmede de cyclussen van meerdere jaren waarna alles weer samenvalt.

[ Voor 6% gewijzigd door Techneut op 17-09-2012 19:50 ]


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 17:03
Pfff,
Ik heb hier een PIC16F57 en op pagina 105 t/m 108 kun je zien hoe die rekent met SIN.
Dit is geen makkelijke kost zo te zien en zeker niet als je bedenkt dat het wrs ook nog eens verschilt per uC en per programmeertaal :/

Afbeeldingslocatie: http://s7.postimage.org/4t8vckhlj/img18.jpg

Geen idee ook wat brads betekent, maar op genoemde pagina's kun je wellicht een voorbeeld eruit halen
http://www.parallax.com/P...d/stamps/web-BSM-v2.2.pdf

Acties:
  • 0 Henk 'm!

  • JER00N
  • Registratie: Maart 2002
  • Niet online
Eventueel kan je ook in bijv. excel een sinus-tabel maken en die gebruiken als lookup-table.

Acties:
  • 0 Henk 'm!

  • SA007
  • Registratie: Oktober 2002
  • Laatst online: 29-05 22:23

SA007

Moderator Tweaking
In een microcontroller (bij atmel in ieder geval) heb je de volledige gcc ter je beschikking, daarmee kan kan je prima met sinus rekenen.
Het is alleen wel erg traag, maar denk niet dat je in jouw systeem daar erg veel last van zou hebben.

Als de snelheid wel boeiend is kan je voor een loopuptable gaan waar je (gedeeltelijk) berekende waardes inzet die nauwkeurig genoeg zijn voor je toepassing.

Acties:
  • 0 Henk 'm!

  • Sissors
  • Registratie: Mei 2005
  • Niet online
kitao schreef op maandag 17 september 2012 @ 19:10:
Pfff,
Ik heb hier een PIC16F57 en op pagina 105 t/m 108 kun je zien hoe die rekent met SIN.
Dit is geen makkelijke kost zo te zien en zeker niet als je bedenkt dat het wrs ook nog eens verschilt per uC en per programmeertaal :/

[afbeelding]

Geen idee ook wat brads betekent, maar op genoemde pagina's kun je wellicht een voorbeeld eruit halen
http://www.parallax.com/P...d/stamps/web-BSM-v2.2.pdf
Als ik zo kijk bedoelen ze daar binary-rads mee ofzo. Plaatje ziet er iig niet heel nauwkeurig uit.

Gewoon sinus uit math.h is makkelijkste. Als je het sneller nodig heb zou ik een Wikipedia: Piecewise linear function erbij halen.

Acties:
  • 0 Henk 'm!

  • Rene2322
  • Registratie: April 2007
  • Laatst online: 22:09
Bedankt voor de reacties. Ik zal me hier eens in vast gaan bijten.
Brads zijn idd binaire radialen.

Ik denk dat ik me eerst maar eens moet gaan verdiepen in de diverse uC's (al denk ik dat PIC geen verkeerde keus zou zijn). Dan een programmer erbij zoeken of zelf bouwen.

Wat heeft trouwens de voorkeur qua taal. ASM of een C-achtige...? Als ik het zo lees, dan zou C mogelijk wat meer ballast meedragen, daar waar ASM native functies van de uC gebruikt. Aan de andere kant, performance is niet heel belangrijk.

ASM doet me wat denken aan vroegere PLC-programmeer opdrachtjes. Ben bang dat ik met een dergelijk blokschema niet ver kom. C spreekt me dan meer aan. Ben hobbymatig wel in VB en VBA aan het programmeren, dus ik denk dat de basis lichtelijk aanwezig is.

//Lees nu dat PIC, voor zover ik begrijp, nog geen gcc port heeft. Wel varianten hierop. Zal me eens verdiepen in atmel...

[ Voor 7% gewijzigd door Rene2322 op 17-09-2012 22:44 ]


Acties:
  • 0 Henk 'm!

  • Bartjezz
  • Registratie: Maart 2006
  • Laatst online: 16-06-2024
Zoek eens op astrotimer? Die gaat elke dag met het licht mee aan en uit, dus zomers later aanen swinters vroeger aan savonds.

Acties:
  • 0 Henk 'm!

  • Techneut
  • Registratie: September 2007
  • Niet online
Heel aardig idee, het is de opvolger van de vroegere mechanische astronomische klok. Die had een asymmetrisch schijfje dat in een jaar ronddraaide en de tijdstippen van zonsop en -ondergang volgde. Maar daarmee heb je alleen maar die tijdstippen, verder niets. Of wil TS dat ook alleen maar? Ik had aanvankelijk begepen dat hij meer wilde. Maar de maancyclus komt er helemaal niet aan te pas. en die wil TS er toch ook in verwerken.

[ Voor 10% gewijzigd door Techneut op 18-09-2012 11:21 ]


Acties:
  • 0 Henk 'm!

  • DaWaN
  • Registratie: Oktober 2002
  • Laatst online: 15:58

DaWaN

'r you wicked ??

Rene2322 schreef op maandag 17 september 2012 @ 22:33:
Ik denk dat ik me eerst maar eens moet gaan verdiepen in de diverse uC's (al denk ik dat PIC geen verkeerde keus zou zijn). Dan een programmer erbij zoeken of zelf bouwen.

Wat heeft trouwens de voorkeur qua taal. ASM of een C-achtige...? Als ik het zo lees, dan zou C mogelijk wat meer ballast meedragen, daar waar ASM native functies van de uC gebruikt. Aan de andere kant, performance is niet heel belangrijk.
Tegenwoordig hebben alle fabrikanten van microcontrollers hun beginners kitjes zo goedkoop gemaakt dat je er eigenlijk niet meer omheen kan.

Persoonlijk denk ik dat ARM microcontrollers de toekomst hebben en langzaam zullen denk ik de Atmel AVR's en de PIC16 / PIC18's gaan verdwijnen.

Als je zelf technisch aangelegd ben en er niet terug van schrikt om meteen 'in het diepe te duiken' dan zou ik een bordje met ARM processor en programmer kopen. Alle ARM processoren hebben een goede GCC poort. Eventueel kun je ook nog de PIC32 overwegen, daar heb ik zelf echter geen ervaring mee.

Genoeg voorbeelden: (voor het gemak even allemaal bij Farnell) (allemaal inclusief programmer en minder dan 40 euro)

PIC32 starter kit
STM32F0DISCOVERY bordje
LPCXpresso bordje
TI Stellaris ARM launchpad

Als je voornamelijk bent geïnteresseerd in de toepassing en je niet te veel met de microcontroller en de programmeer omgeving e.d. bezig wilt houden zijn Arduino's ook erg geschikt. Nadeel van Arduino's vind ik zelf toch wel een beetje de beperktheid in de software omdat je vast zit aan libraries e.d.
Arduino's zijn wel ideaal om heel snel zonder veel kennis een applicatie in elkaar te draaien.

If you do not change direction, you may end up where you are heading


Acties:
  • 0 Henk 'm!

  • Part
  • Registratie: September 2000
  • Laatst online: 28-05 12:51

Part

Helemaal niets.....

Met een lineaire interpolatie en een paar punten van de sinus kun je op het oog al een redelijke sinus maken.

Afbeeldingslocatie: http://docs.scipy.org/doc/scipy/reference/_images/interpolate-3_00_00.png

Desnoods pak je nog een paar punten extra. Dan ga je aan de helderheid van de led echt niet zien dat er gebruik is gemaakt van interpolatie.

Je weet dat er ook basic is voor microcontrollers?
http://www.mcselec.com

Acties:
  • 0 Henk 'm!

  • Rene2322
  • Registratie: April 2007
  • Laatst online: 22:09
Part schreef op dinsdag 18 september 2012 @ 19:40:

Je weet dat er ook basic is voor microcontrollers?
http://www.mcselec.com
Nu wel...

Wat ik wil is ledverlichting voor mijn aquarium welke de zon- en maancyclus simuleren. Daarnaast zou de stromingspomp ook gestuurd moeten worden zodat dood tij ook zo nu en dan voorkomt.

Ik had in gedachten om 1 datum te kiezen waarbij zon en maanstand bekend zijn. Van daaruit de verstreken tijd vergelijken met de sinusbeweging. Een stuk of 10/20 punten op die sinus zijn hierin voldoende.

Middels PWM zouden m'n LED's dan gedimd moeten worden. 1x per dag (misschien wel per week) zou ik dan de datum corrigeren met de datum van de RTC. Het tijdverschil (ook mogelijk bij stroomuitval) geeft een verschil met de gewenste PWM-frequenty danwel duty-cycle. Dit zal dan met een factor 10 versneld worden gecorrigeerd.

Ondanks dat het voor mij een behoorlijke sprong in het diepe is, spreekt het mij enorm aan om zelf een printplaat samen te stellen. Er is genoeg info op internet om tot leuke schakelingen te komen (diy led dimmer / Higly Efficiënt 0-100% LED Dimmer / LCD PIC Clock / etc).

Bij vragen meld ik me weer. Hopelijk word ik dan weer door dit soort enthousiastelingen geholpen.

Greetz,
René

Acties:
  • 0 Henk 'm!

  • Sissors
  • Registratie: Mei 2005
  • Niet online
Als je ooit nog wat meer met microcontrollers wil doen zou ik toch voor C/C++ gaan, dat is gewoon de standaard, en basic is erg beperkt in welke mogelijkheden je hebt.

  • TheGhostInc
  • Registratie: November 2000
  • Niet online
Kijk ook even naar Arduino.
Heb zelf PIC (Assembly) en alles daarboven geprogrammeerd, en ben zelf erg tevreden voor 'Hobby' werk met Arduino. Heb je geen programmer nodig, je hebt een werkend bordje en er is veel over te vinden.
Met PIC-jes heb ik nog weleens gehad dat mijn project achteruit ging ipv vooruit, was ik meer bezig om de clock & print goed te krijgen ipv het echte project te ontwikkelen, waardoor ik uiteindelijk zelfs het projectje in de kast heb gegooid.
Pagina: 1