Microcontroller, of toch dedicated hardware?

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Xudonax
  • Registratie: November 2010
  • Laatst online: 23-09 09:25
Mijn vraag
Voor een project ben ik op zoek naar een methode om een 25kHz PWM signaal en een 16 bit counter te vinden. Afzonderlijk niet zo heel lastig te vinden, maar ik wil het graag in één IC hebben met een I2C of SPI interface eraan. Omdat dit niet zo heel makkelijk te vinden is dacht ik eraan om een goedkope Atmel microcontroller te gebruiken, maar is dat wel de handigste manier?

Wat ik zoek:
  • 25kHz PWM signaal (grofweg)
  • 16+ bit counter, maximaal een 25kHz of iets in die richting
  • Counter moet iedere seconde gereset worden
  • In te stellen / uit te lezen als I2C of SPI slave
Het idee is om dit als laatste stap te gebruiken in een fancontroller. De 25kHz is dan ook niet héél precies, zolang het tussen de 20 en 30kHz ligt is het goed volgens de specs van Intel.

Wat ik al gevonden of geprobeerd heb
Het is heel lastig te zijn om een counter IC te vinden welke via I2C, SPI of een andere serieële interface uit te lezen is. Alles wat ik kan vinden heeft net zoveel output pinnen als dat er bits "in zitten". Een ATTiny25 klinkt me als een mooi alternatief in de oren, maar ik word uit de datasheet niet duidelijk of ik zowel een PWM output, een counter input, én een I2C verbinding tegelijk kan gebruiken. De datasheet lezen heb ik geprobeerd, maar ik kom er niet echt uit.

Qua het aantal van de pinnen kom ik volgens mij goed uit, er zijn 5 I/O pinnen (de reset daargelaten), dus met 1 voor PWM, 1 voor de counter en 2 voor I2C houd ik er nog één over voor een LED of zo :+

EDIT: Gezien de relatief lage frequentie van de counter kan dit natuurlijk ook in software. Maar in dat geval zou ik een pin change interrupt moeten kunnen onderscheppen op die specifieke pin.

[ Voor 5% gewijzigd door Xudonax op 17-12-2017 17:17 ]

Alle reacties


Acties:
  • 0 Henk 'm!

  • TommyboyNL
  • Registratie: Januari 2006
  • Niet online
Als je weinig kennis van AVRs hebt, zou ik voor een ATmega328A gaan als ik jou was. Die is niet veel duurder, en doordat het ding in arduino's gebruikt wordt kan je veel hulp krijgen bij het programmeren.
In principe kan deze alles wat jij wil, afhankelijk van de resolutie die je wilt voor je PWM signaal. 8 bits is hoe dan ook haalbaar, hoger wellicht ook (maar daarvoor zal ik de datasheet weer even open moeten trekken).

Acties:
  • 0 Henk 'm!

  • jctjepkema
  • Registratie: Mei 2011
  • Laatst online: 15:47
Ik vond in arduino het altijd erg k.u.t. om PWM goed te doen. Kijk eens naar nucleo's. STM32F042K6t6 is relatief goedkope krachtige chip, en kan je met MBED programmeren. Wat in mijn optiek erg makkelijk is en prima kwaliteit bied. Plus je kan eigenlijk je PWM op de Usconden instellen, wel fijn als je een 25khz pwm wil genereren.

Acties:
  • 0 Henk 'm!

  • TommyboyNL
  • Registratie: Januari 2006
  • Niet online
Het instellen van je registers t.b.v. PWM moet je ook niet door libraries laten doen, het is een kleine moeite om zelf de betreffende 2 a 3 registers goed te zetten..

Acties:
  • 0 Henk 'm!

  • jctjepkema
  • Registratie: Mei 2011
  • Laatst online: 15:47
TommyboyNL schreef op zondag 17 december 2017 @ 20:41:
Het instellen van je registers t.b.v. PWM moet je ook niet door libraries laten doen, het is een kleine moeite om zelf de betreffende 2 a 3 registers goed te zetten..
Kijk dat is het punt. Als je beginnend programmeur bent en je moet op register niveau gaan zitten maak je het al pittiger. Mbed is daar gewoon makkelijker in. Inmiddels ken ik de avrs ook wel aangezien we die op werk gebruiken. Maar uiteindelijk zal ik altijd kiezen voor een STM met arm MDK.

Acties:
  • 0 Henk 'm!

  • Xudonax
  • Registratie: November 2010
  • Laatst online: 23-09 09:25
Beginnende programmeur zou ik niet direct willen zeggen, maar wel mijn eerste poging om echt iets met AVRs te doen. Ik weet niet hoor handig de ATmega optie is, vooral omdat ik één zo'n chip per fan in gedachte had. Maar morgen eens even zien of ik niet bijvoorbeeld vier fans kan aansturen op een ATmega :)

Het nadeel van andere of grotere CPU's is al snel dat het niet meer in een DIP package te krijgen is. En ik ben nu niet handig genoeg om SMD chips te gaan solderen.

Acties:
  • 0 Henk 'm!

  • TommyboyNL
  • Registratie: Januari 2006
  • Niet online
SOIC is ook nog goed te doen voor ongeoefende soldeerders, maar de 328 is alleen in DIP of TQFP te krijgen.
Met de tiny25 ga je er overigens niet komen, die heeft alleen 2 8-bit counters. Jij hebt een 16-bit counter nodig en een 8/16 bit counter voor je PWM. Als je het jezelf makkelijk wilt maken wil je ook hardware I2C hebben. Als je dat invult op de parametrische search, kom je uit op de ATtiny 20/414/814/1614/24A/44A/84A.

Acties:
  • 0 Henk 'm!

  • itcouldbeanyone
  • Registratie: Augustus 2014
  • Laatst online: 12-09 21:49
Xudonax schreef op zondag 17 december 2017 @ 22:37:
Beginnende programmeur zou ik niet direct willen zeggen, maar wel mijn eerste poging om echt iets met AVRs te doen. Ik weet niet hoor handig de ATmega optie is, vooral omdat ik één zo'n chip per fan in gedachte had. Maar morgen eens even zien of ik niet bijvoorbeeld vier fans kan aansturen op een ATmega :)

Het nadeel van andere of grotere CPU's is al snel dat het niet meer in een DIP package te krijgen is. En ik ben nu niet handig genoeg om SMD chips te gaan solderen.
Wat heeft 16 bit voor nut om fans aan te sturen ?
16 bit is dan echt overkill,
Besides een snelle 8bit PI control heeft in 99% beter resultaat dan een gemiddelde 16bit control.
En waarom >20khz ,
Als je fets hiermee wilt gaan schakelen is die hoge freq juist ineffiecient .

Ben niet slim, maar wel dom


Acties:
  • 0 Henk 'm!

  • Xudonax
  • Registratie: November 2010
  • Laatst online: 23-09 09:25
itcouldbeanyone schreef op maandag 18 december 2017 @ 00:27:
[...]


Wat heeft 16 bit voor nut om fans aan te sturen ?
16 bit is dan echt overkill,
Besides een snelle 8bit PI control heeft in 99% beter resultaat dan een gemiddelde 16bit control.
En waarom >20khz ,
Als je fets hiermee wilt gaan schakelen is die hoge freq juist ineffiecient .
De PWM hoeft niet per sé 8 bit te zijn, maar dat is wel welkom zodat het ruim instelbaar is. De frequentie daarvoor is omdat Intel dat zo in hun specificatie (sectie 2.4) heeft staan.

De counter kan wel 8 bits worden omdat ik verkeerd zat te denken. de readout is natuurlijk rotaties per minuut, niet per seconde. Een fan met 3000RPM komt neer op ~50 rotaties per seconde, dus dat scheelt weer.
TommyboyNL schreef op zondag 17 december 2017 @ 23:40:
SOIC is ook nog goed te doen voor ongeoefende soldeerders, maar de 328 is alleen in DIP of TQFP te krijgen.
Met de tiny25 ga je er overigens niet komen, die heeft alleen 2 8-bit counters. Jij hebt een 16-bit counter nodig en een 8/16 bit counter voor je PWM. Als je het jezelf makkelijk wilt maken wil je ook hardware I2C hebben. Als je dat invult op de parametrische search, kom je uit op de ATtiny 20/414/814/1614/24A/44A/84A.
Ik had me een ietwat vergist in hoeveel bits ik nodig heb in de counter, maar die ATtiny24A serie ziet er interessant uit! Dan zou ik zelfs wat externe pinnen kunnen gebruiken om het I2C adres in te stellen. Vanavond maar even de datasheet in detail bestuderen.

Acties:
  • 0 Henk 'm!

  • Lennyz
  • Registratie: Januari 2010
  • Laatst online: 25-09 09:49
Is dit wat je zoekt? Een STM32F103/

https://nl.aliexpress.com...ef172b2f&rmStoreLevelAB=0

Programmeerbaar middels de Arduino IDE. Wel de versie bestellen met ' Arduino boot solder'
Pagina: 1