PIC Microcontroller met SD Kaart

Beste CO gebruikers,

Ben voor de hobby opzoek om een kleine datalogger te maken. Deze data zou ik dan willen opslaan op een SD kaart en die vervolgens uitlezen op een PC.

Nu heb ik zelf redelijk wat ervaring in diverse programmeer talen. Van PLC tot aan Websites wat ik me zelf heb aangeleerd. Via school ben ik ooit in aanraking gekomen met basic Stamp. Dat was me zelf later veel te duur. En ben terecht gekomen op PICbasic met de 16F628a microcontroller. En heb dan ook alle spullen daarvoor ooit aangeschaft. Maar ja je wilt wel eens verder.

Nu ben ik aan het zoeken geweest, maar nu lijk de PIC16F628a niet de geschikte uController voor SD kaarten.

Wie kan mij in de juiste richting duwen, want zie zoveel dat ik toch echt de weg kwijt ben. Kwa Microcontrollers en programmeer talen voor mijn toepassing en toekomst.

bprosman

Golden Member

Natuurlijk kan het met een PIC maar ik zou dan gaan voor een Arduino setje. Dan ben je qua voorbeeldcode meteen vertrokken.

https://www.arduino.cc/en/Tutorial/Datalogger

De jongere generatie loopt veel te vaak zijn PIC achterna.
Arco

Special Member

Iedere controller met een SPI poort voldoet wel. Bijv. de 16F1938/39 of 16F1847.

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Ik weet niet precies wat je exact wilt voor hardware oplossing, maar Olimex heeft ooit een PIC32-Pinguino-Micro gemaakt. Dit is een PIC32 op een printje met o.a. een micro SD kaartslot erop. Het is bedoeld voor de hele Arduino ontwikkelomgeving, maar ik kan bevestigen dat je ook gewoon met de ICSP programmeer header zonder die Arduino bootloader kunt werken.

https://www.olimex.com/wiki/images/thumb/3/38/PIC32-PINGUINO-MICRO.png/650px-PIC32-PINGUINO-MICRO.png

1 electron per seconde = 16 atto ampere!
Arco

Special Member

Wel ineens een hele grote sprong van een 16f628 naar een PIC32... ;)
(en behoolijk overkill voor zo'n simpel klusje...)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Oke, het was misschien overkill maar nogmaals, ik weet niet precies wat TS wil. Misschien heeft ie wel een heleboel signalen wat hij wilt loggen. Welke oplossing hij ook gaat kiezen, een SD kaart communiceert met 3,3V. Het is handig als je microcontroller dit ook is, als je level shifters wilt vermijden.

1 electron per seconde = 16 atto ampere!
Arco

Special Member

Alle nieuwere pic's werken op 3.3v, behalve hele oude die alleen nog op 5v werken. (de 16f628 werkt ook nog op 3.3v als je niet boven 10Mhz gaat)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Zoals gezegd kun je met een gewone SPI bus met zo'n kaart communiceren (mits de controller op 3v3 loopt, anders met level-shifters), maar er zijn ook controllers die speciale SPI poorten hebben met 4 data lijnen, dan gaat de communicatie veel sneller. Voor een datalogger is die snelheid vaak niet zo'n probleem, en dan kun je het beter simpel houden.

Het klinkt alsof het nog een brug te ver is om alle software voor de afhandeling van de commando's naar de kaart, en het lezen en schrijven van het file system zelf te schrijven, dus dan is het handig om te kijken voor welk platform je fatsoenlijke voorbeeldcode kunt vinden.

Het is ook wel handig om een controller te kiezen met relatief veel RAM, omdat je toch wat data moet kunnen bufferen. Het is niet onmogelijk met een kleine controller met weinig RAM, maar wel gelijk weer moeilijker dan nodig.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken

Hartelijk dank allemaal.

Het is maar een hele simpele logger. Voor nu dan ahah.
het is nu alleen maar de bedoeling dat ik een ingang binnen krijg. Dat wordt gedetecteerd. Vervolgens moet dat met datum en tijd naar de SD kaart. Later haal ik de SD kaart eruit en kan ik zo de events uitlezen.

Er is gewoon zoveel keuze, en dan is de vraag wat is dan een makkelijke volgende stap. Op youtube is er een filmpje te zien, waarin afbeeldingen naar een scherm wordt geschreven. Dat allemaal met een 16f628. Maar ja dat is allemaal in het pools of russisch.

Een arduino heb ik overwogen, maar dat is dan weer gelijk zo groot en overdone boordje. Terwijl bijvoorbeeld een PIC zo klein is en je alle kanten kwa maat nog op kan.
Wel zou het mooi zijn als er ergens al een soort van voorbeeld of uitleg zou zijn. Met hoe je dat dan zou moeten schrijven. Maar heb nog niet diep in SPI gedoken, dus dat ga ik eerst maar eens doen.

Want hoe zit het met RAM, hoeveel RAM zou een uController moeten hebben. Voor een simpele logging. Is het zo dat net zoals met PHP dat je eerst het bestand van de SD kaart opent en leest. En dan pas regels erbij kan schrijven??

een sdcard lezen/schrijven etc is voor een kleine pic geen gemakkelijke taak. IN onderstaande link is een beschrijving hoe je het kan doen, je moet wel nog een aantal functies zelf schrijven

http://elm-chan.org/fsw/ff/00index_p.html

etienne

Op 29 januari 2018 11:43:18 schreef Darknight:
Een arduino heb ik overwogen, maar dat is dan weer gelijk zo groot en overdone boordje. Terwijl bijvoorbeeld een PIC zo klein is en je alle kanten kwa maat nog op kan.

Dan begrijp je de hint "arduino" niet goed.

Er is een "arduino uno" bordje wat groot en lomp is. Je hebt gelijk. Dat is een prima platform om je software op te ontwikkelen. Dan kan je later gaan kijken naar of je het op een "bare AVR chip" of bijvoorbeeld op een "arduino nano" wil gaan runnen. Met een 'nano beginnen kan natuurlijk ook. De AVR chips waar de arduino mee werkt zijn net zo groot en klein als de PIC familie.

Je moet de boel via SPI aansluiten, maar als je de juiste library gebruikt hoef je daar niet "in te duiken".

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Arco

Special Member

Hoeveel RAM je nodig hebt hangt af van de hoeveelheid data die je wilt lezen en schrijven in een keer.
Als je FAT gebruikt, moet je de file eerst openen voordat je kunt lezen en schrijven. Als je de kaart 'raw' gebruikt hoeft dat niet.

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Er is een SD library voor gebruik met PicBasic, kijk maar op de website. Nadeel van de meeste wat oudere libraries is dat die alleen kleine sd kaarten (2GB) ondersteunen.

Just find out what you like and let it kill you
Lambiek

Special Member

Op 29 januari 2018 11:43:18 schreef Darknight:
Het is maar een hele simpele logger. Voor nu dan ahah.
het is nu alleen maar de bedoeling dat ik een ingang binnen krijg. Dat wordt gedetecteerd. Vervolgens moet dat met datum en tijd naar de SD kaart. Later haal ik de SD kaart eruit en kan ik zo de events uitlezen.

Is het niet wat omslachtig op deze manier? Waarom niet gelijk de waarde naar je PC zenden in plaats van het eerst op een sdcard zetten, en die vervolgens uit te lezen met de pc en eventueel de data in Exel of Word te zetten.

Dat kan volgens mij simpeler. Of de afstand moet te groot zijn.

Als je haar maar goed zit, GROETEN LAMBIEK.
EricP

mét CE

Bestaat de μAlFat nog? Kun je serieel tegen kletsen en doet alles qua filesystem voor je.

Op 29 januari 2018 13:57:34 schreef Lambiek:
Is het niet wat omslachtig op deze manier?

Tja, gezegd is net natuurlijk niet, maar ik neem aan dat er "weg van de PC" iets gelogd moet worden, hetgeen dan later "een keer" op de PC ingeladen kan worden.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Lambiek

Special Member

Zelf doe ik het via Profilab, en daar kun je kiezen of je het opslaat onder Excel of Word.

Heb een voorbeeld gemaakt voor je.

VOORBEELD - DARKNIGHT.xlsx

VOORBEELD - DARKNIGHT-1.docx

VOORBEELD - DARKNIGHT-2.docx

De waardes in het Excel bestand zijn het zelfde in het voorbeeld, maar je kan aan de tijd zien dat het op verschillende tijden is opgenomen. In het voorbeeld kun je zien dat er 6 verschillende waardes binnen gehaald worden, dit kan max tot 64 met één module.

Op 29 januari 2018 15:21:18 schreef rew:
Tja, gezegd is het natuurlijk niet, maar ik neem aan dat er "weg van de PC" iets gelogd moet worden, hetgeen dan later "een keer" op de PC ingeladen kan worden.

Dan zou het ook nog via Xbee kunnen, kan ook met Profilab.

Als je haar maar goed zit, GROETEN LAMBIEK.
Arco

Special Member

Dan zou het ook nog via Xbee kunnen, kan ook met Profilab.

Dan nog heb je een SD card (of een andere vorm van geheugen) nodig... ;)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Als je voor lange tijd af en toe een gebeurtenis wilt loggen is het een beetje zonder om daar altijd een volledige PC voor te laten draaien, en daarbij is dat niet altijd mogelijk, bijvoorbeeld als je het op een accu moet doen of zo.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken

Op 29 januari 2018 12:17:42 schreef hadv:
Er is een SD library voor gebruik met PicBasic, kijk maar op de website. Nadeel van de meeste wat oudere libraries is dat die alleen kleine sd kaarten (2GB) ondersteunen.

Dat is best uitgebreid inderdaad. Dat ik die niet eerder heb gevonden.

Het Arduino spul heb ik dan inderdaad verkeerd begrepen. Dat het kleiner kon worden opgebouwd dat wist ik niet. Is zeker interessant om daar dan ook in te duiken.

Een PC wordt hem inderdaad niet. Ga niet voor zoiets simpels een complete PC neerzetten. Maar toch bedankt voor het meedenken. Sta altijd open voor ideeën.

Op 29 januari 2018 12:14:49 schreef Arco:
Hoeveel RAM je nodig hebt hangt af van de hoeveelheid data die je wilt lezen en schrijven in een keer.
Als je FAT gebruikt, moet je de file eerst openen voordat je kunt lezen en schrijven. Als je de kaart 'raw' gebruikt hoeft dat niet.

Maar met RAW kan ik hem niet uitlezen op de PC toch? Dan moet hij echt FAT zijn toch?

Verder zie ik nog wat modules voorbij komen. Ga daar ook eens voor kijken, hoe simpeler om te beginnen hoe beter. Moeilijker kan het altijd nog :D

Arco

Special Member

Raw kun je wel op de PC uitlezen, maar dan moet je de PC software ook zelf maken... ;)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Of je mount het ding gewoon raw met Linux, schrijft de inhoud met dd naar een file en opent die vervolgens normaal. Met Windows zijn er ook wel tools te vinden die iets dergelijks kunnen; je kunt immers ook een image maken van een schijf waarvan Windows het file system niet kan lezen.

Als alternatief kun je de microcontroller ook de kaart terug laten lezen en de inhoud dumpen via een (al dan niet virtuele) seriële poort of zo.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken
Lambiek

Special Member

Op 29 januari 2018 16:56:48 schreef Arco:
Dan nog heb je een SD card (of een andere vorm van geheugen) nodig... ;)

Waarom?, het staat al op de PC.

Op 29 januari 2018 19:15:00 schreef SparkyGSX:
Als je voor lange tijd af en toe een gebeurtenis wilt loggen is het een beetje zonde om daar altijd een volledige PC voor te laten draaien, en daarbij is dat niet altijd mogelijk, bijvoorbeeld als je het op een accu moet doen of zo.

Kan prima, heb dat al vaker gedaan. Daar zijn hele leuke oplossingen voor, en die werken gewoon op 12VDC. Maar of het iets voor de TS is weet ik niet.

http://www.fit-pc.com/web/products/fit-pc2/

Als je haar maar goed zit, GROETEN LAMBIEK.

Op 30 januari 2018 09:13:32 schreef Lambiek:
Kan prima, heb dat al vaker gedaan. Daar zijn hele leuke oplossingen voor, en die werken gewoon op 12VDC. Maar of het iets voor de TS is weet ik niet.

http://www.fit-pc.com/web/products/fit-pc2/

Voor 300-400 euro, PLUS verzendkosten, BTW en invoerrechten? Voor iets wat je prima met een microcontroller kunt doen, voor hooguit 20 euro?

Daarbij is het ding "extreem zuinig" met een verbruik van 5W (in idle). Als je microcontroller meer dan 1/1000ste daarvan verbruikt terwijl hij staat te wachten, heb je iets fout gedaan.

Als je nou HD camerabeelden moet verwerken is het wat anders, maar om sporadische events op een digitale ingang te loggen vind ik zo'n PC echt belachelijk.

Toegegeven, als je nog moet leren hoe je zoiets maakt, je dat veel sneller kunt ontwikkelen met een PC omdat je dat al wel kunt, en de uren tegen een normaal tarief betaald moeten worden, kan het een economisch haalbare oplossing zijn, maar de TS zegt toch duidelijk dat het voor de hobby is.

[Bericht gewijzigd door SparkyGSX op dinsdag 30 januari 2018 09:42:40 (16%)

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken