Hallo,

voor veel projecten gebruik ik een standaard microcontroller, een 16F877A of een Atmega32 of een 16F628A. Echter nu wil ik van een klein projectje (een 1 kanaals dimmer of een 3 kanaals dimmer) een wat grotere oplage maken. Het is dus onzin om een te grote micro te nemen, zowel qua printruimte als qua kosten.

Echter als ik zowel bij microchip als bij atmel kijk vind ik eigenlijk niets wat aan de voorwaarden voldoet.

-UART (seriele communicatie)
-Timer 8 bits (dimmen)
-Interrupt pin (nuldoorgangsdetectie)
-1 of 3 output (lamp dimmen met triac of een rgb led)
-Interne osc

Dat zou neerkomen op minimaal 3+1+2 = 6 I/O pins en dan nog 2 voor de voedingsspanning.

Echter geen van bijde fabrikanten heeft zoiets in de aanbieding. Je zit dan al snel aan een beest met 16 of meer poten.. Waarom bestaan dergelijke microcontrollers niet? Of selecteer ik verkeerd?

Want ik zou een te groot IC behoorlijk overkill vinden..

Hoe selecteer je de beste microcontroller voor het beste doel?

Daarom is het ook een microcontroller.
Als het eenvoudiger moet, kan je nog altijd werken met losse componenten.

Bij AVRfreaks kun devices vergelijken. http://www.avrfreaks.net/index.php?module=Freaks%20Devices&func=de… hier kun je de features selecteren die je hebben wilt.

Ehhh Atmel heeft ook de tiny reeks: is goed vergelijkbaar met de mega (volgens mij zelfs ook AVR)

iig dezelfde programmer en WINAVR (GCC) kan ook compilen naar dit ding.

ATTINY13, ATTINY25, ATTINY45. Ongeveer dezelfde dingen: hebben timers, de 25 en 45 hebben ook interrupt pin. UART wordt lastig, mar wellicht via I2C iets doen? Anders software matig op interrupt basis?

er is ook zo'n klein 8 pins PIC'je. Wellicht kun je daar iets mee?

16 pins is niet direct overkill (nou ja, voor je PCB misschien). De 'kleine' AVRs kosten geen drol, dus daar hoef je het niet voor te laten.

Zelf selecteer ik doorgaans door te kijken wat het moet kunnen en waar ik op dat moment 'makelijk' aan kom.

Op 7 november 2006 12:56:03 schreef T.Assies:

-UART (seriele communicatie)
-Timer 8 bits (dimmen)
-Interrupt pin (nuldoorgangsdetectie)
-1 of 3 output (lamp dimmen met triac of een rgb led)
-Interne osc

Dat zou neerkomen op minimaal 3+1+2 = 6 I/O pins en dan nog 2 voor de voedingsspanning.

-Wil je echt een hardware-uart, of zou je het ook kunnen bit-bangen ?
-Timer 8 bits is geen punt, hebben alle, ook de kleinen.
-Interrupt pin voor nuldoorgang, is handig, maar kan evt. ook dmv. pollen.
-Port I/O is ook geen punt, hebben ook alle. Wil je dan voor die outputs een hardware-PWM, of mag die ook in software (hoeft voor een dimmer ook niet snel te zijn, 100Hz PWM-frequentie is snel zat.
-interne osc. geen probleem, hebben alle kleine PIC's

ALs ik zo eens kijk, is e.e.a. met een PIC12F508/9 te maken, nadeel is dat deze geen uart-hardware heeft (dus bitbangen) en geen interrupts(dus nuldoorgang pollen)
Die 12F508/9 is de goedkoopste variant.
een variant MET interrupts en ZONDER uart-hardware is de 12F629, niet veel duurder, maar door de interrupts iets comfortabeler in de software.

Wil je er eentje met veel 'toeters en bellen' dan heb je al gauw een groter package.

Op 7 november 2006 12:56:03 schreef T.Assies:
Echter als ik zowel bij microchip als bij atmel kijk vind ik eigenlijk niets wat aan de voorwaarden voldoet.

-UART (seriele communicatie)

Ik weet niet precies hoe het bij AVRs zit, maar bij PICs is dat je probleem: er zitten geen (hardware!) UARTs in de kleinste PICs. Dus: bit-bangen, of een wat grotere PIC nemen. (of een AVR, of misschien iets heel anders). Of mag het 14-pins zijn? 16F688.

ATTiny2313 1,48@aavrs.nl

2K Bytes of In-System Self-Programmable Flash, 128 Bytes In-System Programmable EEPROM, 128 Bytes Internal SRAM. USI--Universal Serial Interface, Full Duplex UART. debugWIRE for on-chip-debug. Up to 20 MIPS throughput at 20 MHz.

Op 7 november 2006 13:39:07 schreef Wouter van Ooijen:
[...]

Ik weet niet precies hoe het bij AVRs zit, maar bij PICs is dat je probleem: er zitten geen (hardware!) UARTs in de kleinste PICs. Dus: bit-bangen, of een wat grotere PIC nemen. (of een AVR, of misschien iets heel anders). Of mag het 14-pins zijn? 16F688.

Ja idd dat had ik ook al gezien.. bij de avr is dit hetzelfde probleem, pas de wat "groteren" hebben hardware UART... nu kan ik dat wel softwarematig bitbangen, en dan de nuldoorgang met een interrupt (Beiden bitbangen lijkt me niet erg betrouwbaar).

Ik zie idd dat de 12F629 aan mijn eisen voldoet.. de UART bitbangen (DMX signaal, dat is niet heel complex). Verder een Interrupt on Change op de pinnen. 1.75 KB program memory wordt krap.. maar ook dat moet wel gaan..

Het uiteindelijk doel wordt alles zo klein mogelijk. PIC in SOIC, Triac blijft natuurlijk groot maar klein moet lukken..

De site van microchip chrast steeds in firefox!

Hmz.. Je zult voor die triac toch wat koeling nodig hebben... Maar dat is redelijk off-topic.
Atmel heeft divere application notes over bit banged UARTs. Werkt best aardig. Echter, die dingen zijn wel in software getimed. Dus een interrupt tussendoor is vervelend tot dodelijk. Of je zou dat weer op een timerinterrupt moeten doen... :)

Op 7 november 2006 13:58:20 schreef Marco69:
Hmz.. Je zult voor die triac toch wat koeling nodig hebben... Maar dat is redelijk off-topic.
Atmel heeft divere application notes over bit banged UARTs. Werkt best aardig. Echter, die dingen zijn wel in software getimed. Dus een interrupt tussendoor is vervelend tot dodelijk. Of je zou dat weer op een timerinterrupt moeten doen... :)

De algehele opzet gaat worden: een miniprinttrafo (kleine van voti.. heb ik hier liggen), gelijkrichten, afvlakken, een kleine 7805, of een zener, en de triac aan de micro. misschien met een optro-triac. Maar alles gaat iig goed worden ingebouwd in plastic zodat er geen aanrakingsmogelijkheid is. Het ding zelf zal vervolgens op +/- 3 meter hoogte bevestigd worden..

Ik zit ook te kijken om die trafo eruit te werken, aangezien dat echt het grootste ding is van alles. Alleen dan kom je uit op lelijke constructies met zeners e.d en dat is met net wat te onveilig..

Naja je ziet het wel in het projecten topic!

Wat communicatie met de PC betreft: als je over een uC met een I2C-bus beschikt, kan je die aan een RS232-poort koppelen met behulp van een tweetal weerstanden. Op http://www.tuxgraphics.org/electronics/200509/article389.shtml is daar de nodige info over te vinden.

> De algehele opzet gaat worden: een miniprinttrafo (kleine van voti.. heb ik hier liggen)

let op: die zijn uitverkocht!

Ik zou voor een 16F688 kiezen (UART, 14 pins) tenzij je echt enorme aantallen wilt maken. Het prijsverschil met een 8-pins chip is misschien E 0.50.

Als je echt een goedkope niet-UART chip neemt zou ik een isosynchrone loop programmeren, dus geen interrupt.

Op 7 november 2006 14:36:51 schreef Wouter van Ooijen:
> De algehele opzet gaat worden: een miniprinttrafo (kleine van voti.. heb ik hier liggen)

let op: die zijn uitverkocht!

Ik zou voor een 16F688 kiezen (UART, 14 pins) tenzij je echt enorme aantallen wilt maken. Het prijsverschil met een 8-pins chip is misschien E 0.50.

Als je echt een goedkope niet-UART chip neemt zou ik een isosynchrone loop programmeren, dus geen interrupt.

Ja ik weet het, ik heb er hier 2 liggen die ik ooit had besteld.. en als het functioneerd dan bestel ik wel ergens bij een inkoopactie bij een grote jongen wat mee..

Misschien is de 16F688 idd een goede keuze. De ruimte waar het wordt ingebouwd is een lasdoos, en daar is in principe ruimte zat voor een iets groter formaat.

Ik denk dat er ongeveer 20 van gemaakt gaan worden :) (op termijn, eerst fatsoenlijk testen!)

Op 7 november 2006 15:10:39 schreef T.Assies:
Misschien is de 16F688 idd een goede keuze. De ruimte waar het wordt ingebouwd is een lasdoos, en daar is in principe ruimte zat voor een iets groter formaat.

vergeleken met een trafo is het verschil tussen een 8-pins SOIC en 14-pins TSSOP te verwaarlozen. En wat de prijs betreft: voor 20 x E 0.50 = E 10.00 is het niet de moeite waarde je in allerlei bochten te wringen...

maar hoe zit dat met veiligheid, als je het DMX signaal de lasdoos binnen laat ligt het in principe naast enjel geisoleerde 230 leidingen, dat betekent volgens mij dat je dat DMX signaal als 230 leiding moet gaan behandelen?

Zilog Z8 Encore!XP zou in de buurt van je eisen kunnen kopen. Biedt in elk geval een UART in SO/DIP8.

(http://www.zilog.com/products/partdetails.asp?id=Z8F011A)

Alleen of het voor 20st nou de moeite loont om je daar uberhaupt druk over te maken...

Als je van die trafo af wilt: koop een Nokia ACP-12X lader en sloop die, goedkoper dan een trafo + brugcel+ afvlakelco en vele malen kleiner. Een extra diode en je hebt je 5 Volt te pakken.

Op 7 november 2006 15:58:31 schreef Wouter van Ooijen:
[...]

vergeleken met een trafo is het verschil tussen een 8-pins SOIC en 14-pins TSSOP te verwaarlozen. En wat de prijs betreft: voor 20 x E 0.50 = E 10.00 is het niet de moeite waarde je in allerlei bochten te wringen...

maar hoe zit dat met veiligheid, als je het DMX signaal de lasdoos binnen laat ligt het in principe naast enjel geisoleerde 230 leidingen, dat betekent volgens mij dat je dat DMX signaal als 230 leiding moet gaan behandelen?

Het idee is als volgt:

Een ronde lasdoos met vijf uitgangen. 2 rechts, 2 links en 1 "naar beneden". Het gaat om muurverlichting, die nu allemaal op elkaar zijn aangesloten. Ik wil dus 2 pvc buizen trekken boven elkaar, 1x 230 en 1x dmx. Boven iedere lamp dus zon lasdoos, 230 in, 230 doorlus voor de volgende lamp, dmx in, dmx doorlus (2x in en 2x uit) en uit de vijfde uitgang dus de gedimde output.

De dmx lijn ga ik galvanisch gescheiden uitvoeren, zowel de zender als ontvanger.. dan lijkt het me wel goed zitten. Ik weet dat je volgends de NEN1010 geen 230 en signaalkabel door 1 buis mag voeren, daarom de aparte buizen.

/edit

dit idee dus:

http://members.chello.nl/g.assies/uitleg.JPG

In werkelijkheid hangen de lampen een aantal meter uit elkaar maar het idee is hopelijk duidelijk..

Op 7 november 2006 16:03:02 schreef LaStei:
Als je van die trafo af wilt: koop een Nokia ACP-12X lader en sloop die, goedkoper dan een trafo + brugcel+ afvlakelco en vele malen kleiner. Een extra diode en je hebt je 5 Volt te pakken.

Waar kan ik die kopen en wat kost dat? :)

is dat DMX bi-directioneel, of moet de PIC dat alleen ontvangen ?

ik denk nl. in termen van optocouplers om het DMX-gebeuren geisoleerd binnen te halen, en dan de PIC direkt aan het net.

@wouter: isosyncrone loop is idd. de beste oplossing voor 12F508.

De 12F629 kan ook met 2-tal interrupts, 1tje voor 100 Hz nuldoorgangsdetectie (nog 1 reden om de pic niet achter een trafo te zetten, je hebt dan 2x optocoupler nodig, 1x voor nuldoorgang en 1x voor triac.) en 1 interrupt voor de RS232. wacht op de flank van het startbit, en vervolgens via timer-interrupts bittijden afwachten en bitjes binnenhalen. Indien de nuldoorgangs-interrupt kort is kwa afhandelingstijd, is de tijdsverschuiving als gevolg van een pending timer interrupt tijdens de nuldoorgang geen probleem.

@Tassies: 1,75 k EEPROM betekent in de praktijk 1023 ASM-instructies (eigenlijk 1024, maar de laatste heeft een osccal-waarde)

Hier bijvoorbeeld?

Heb je trouwens ook gedacht het hele zaakje draadloos te doen? scheelt een hoop pijpwerk. (of direct de data via de 220 te versturen?)

[Bericht gewijzigd door LaStei op ]

Op 7 november 2006 16:15:48 schreef DC2PCC:
is dat DMX bi-directioneel, of moet de PIC dat alleen ontvangen ?

ik denk nl. in termen van optocouplers om het DMX-gebeuren geisoleerd binnen te halen, en dan de PIC direkt aan het net.

@wouter: isosyncrone loop is idd. de beste oplossing voor 12F508.

De 12F629 kan ook met 2-tal interrupts, 1tje voor 100 Hz nuldoorgangsdetectie (nog 1 reden om de pic niet achter een trafo te zetten, je hebt dan 2x optocoupler nodig, 1x voor nuldoorgang en 1x voor triac.) en 1 interrupt voor de RS232. wacht op de flank van het startbit, en vervolgens via timer-interrupts bittijden afwachten en bitjes binnenhalen. Indien de nuldoorgangs-interrupt kort is kwa afhandelingstijd, is de tijdsverschuiving als gevolg van een pending timer interrupt tijdens de nuldoorgang geen probleem.

@Tassies: 1,75 k EEPROM betekent in de praktijk 1023 ASM-instructies (eigenlijk 1024, maar de laatste heeft een osccal-waarde)

Ja idd, het beste lijkt me het signaal door optocouplers heen. Het is niet bi-directioneel, het is gebaseerd op RS485. Dat betekend wel dat het eerst door een sn75176 moet voordat het TTL signaal wordt. Maakt galvanisch scheiden wel lastiger!

De pic direct aan de netspanning is een optie idd, gelijkrichten afvlakken en met een dikke zener?

Op 7 november 2006 16:15:48 schreef DC2PCC:
De 12F629 kan ook met 2-tal interrupts, 1tje voor 100 Hz nuldoorgangsdetectie (nog 1 reden om de pic niet achter een trafo te zetten, je hebt dan 2x optocoupler nodig, 1x voor nuldoorgang en 1x voor triac.) en 1 interrupt voor de RS232.

zou ik niet doen, DMX is toch 250kb, dus 20 instructies per baud? daar kan je niet veel in doen, dus geen cycles verspillen aan interrupts!

hmm, RS485, da's wel een bidirectioneel protocol.

Maar differentieel, dus eventueel via koppeltrafo's galvanisch te scheiden (daar moet een RS485 GURU maar eventjes inhaken) ipv. een optocoupler.

Wat betreft signaalleidingen door de 230v buizen, dit mag volgens de NEN1010 inderdaad niet, MAAR jouw voorstel is evengoed niet toegestaan, omdat via de dozen je toch 230v tegenkomt. die signaalleiding moet eigenlijk ook in een aparte doos gelegd worden.

Wat WEL kan is het RS485-signaal op een stuurleiding zetten, die mag je dan wel met de 230v mee laten lopen. Tussen de controller en de stuurleiding moet dan wel een dusdanige galvanische scheiding plaatsvinden dat je controller niet onverhoopt 230 volt aan z'n signaaluitgnag krijgt (daarom is dat gedacht) en je stuuringangen van je DMX-dimmers moeten er tegen kunnen als er onverhoopt 230v op komt te staan.

Op 7 november 2006 16:05:20 schreef T.Assies:Het idee is als volgt:

klinkt logisch. Ik zou bij die DMX leiding ook een voedingsleiding toevoegen, heb je maar 1x een trafo nodig.