Varför en sådan bra precision på MCP3008 jämfört med ATmega?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Volvo740
Inlägg: 149
Blev medlem: 15 juli 2017, 19:11:01

Varför en sådan bra precision på MCP3008 jämfört med ATmega?

Inlägg av Volvo740 »

Igår fick jag hem min Arduino UNO och jag testade att läsa av några analoga värden. Det fladdrade väldigt mycket. Även servostyrning var också fladdrigt.
Därför testade jag MCP30008 för att läsa av analoga värden. Herregud! Vilken stor skillnad det blev. Även servostyrning med PCA9685 gick riktigt stabilt.

Fråga: Har MCP3008 ADC och PCA9685 PWM högre precision/stabilitet jämfört med ATmegan328?

Tackar för svar.
Glattnos
Inlägg: 2983
Blev medlem: 29 oktober 2009, 20:01:18

Re: Varför en sådan bra precision på MCP3008 jämfört med ATm

Inlägg av Glattnos »

Beror väll lite på hur koden ser ut. ATmegan brukar vara tillräckligt stabil för både ADC och PWM, men är koden dålig så kan allt "fladdra".

Vad är det för kod, vilken ström-matning, vilken typ av servo och hur ser du "fladder"(oscilloskop eller fladdrar servot)?
Användarvisningsbild
Icecap
Inlägg: 26136
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Varför en sådan bra precision på MCP3008 jämfört med ATm

Inlägg av Icecap »

Samma upplösning och känslighet.

Ganska säkert att du inte har kopplat in de kondensatorer osv. som du borde på Arduinon.
Sedan är det frågan om hur GND går och en del annat.
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43176
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: Varför en sådan bra precision på MCP3008 jämfört med ATm

Inlägg av sodjan »

Det saknas helt relevanta värden förutom att det "fladdrar"
så det är svårt att bedöma. Sen så är ju både MCP3008 och
PCA9685 optimerade hårdvarulösningar för det som de gör
och det krävs bra design och välskriven programvara för att
komma nära dessa med en generell AVR lösning. Du kanske
även körde med en SW PWM i Arduinon, det vet bra du.
Volvo740
Inlägg: 149
Blev medlem: 15 juli 2017, 19:11:01

Re: Varför en sådan bra precision på MCP3008 jämfört med ATm

Inlägg av Volvo740 »

Glattnos skrev:Beror väll lite på hur koden ser ut. ATmegan brukar vara tillräckligt stabil för både ADC och PWM, men är koden dålig så kan allt "fladdra".

Vad är det för kod, vilken ström-matning, vilken typ av servo och hur ser du "fladder"(oscilloskop eller fladdrar servot)?
Jag uppfattade min ATmega som stabil. Men läsa av analoga värden så såg jag liknande:
667
668
666
667
666
665
668
667
667
665
664
668
Icecap skrev:Samma upplösning och känslighet.

Ganska säkert att du inte har kopplat in de kondensatorer osv. som du borde på Arduinon.
Sedan är det frågan om hur GND går och en del annat.
Jag hoppade inte in några kondensatorer. Är det detta som kallas "avlastningskondensatorer" och ska placeras analoga ingången på ATmegan och analoga utgången hos givaren?
sodjan skrev:Det saknas helt relevanta värden förutom att det "fladdrar"
så det är svårt att bedöma. Sen så är ju både MCP3008 och
PCA9685 optimerade hårdvarulösningar för det som de gör
och det krävs bra design och välskriven programvara för att
komma nära dessa med en generell AVR lösning. Du kanske
även körde med en SW PWM i Arduinon, det vet bra du.
Jag vet inte vad SW är i Arduino. Men om MCP3008 och PCA9685 är optimerade jämfört med ATmegan så har det sig en förklaring.
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43176
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: Varför en sådan bra precision på MCP3008 jämfört med ATm

Inlägg av sodjan »

> Men läsa av analoga värden så såg jag liknande:

Det där är ju ganska stabilt. Bara några enheter +/- i sista siffran.
Någonting kring +/- 0.2% ungefär.

> Jag vet inte vad SW är i Arduino.

OK... En AVR (eller vilken processor som helst som kan programmeras)
kan normalt köa PWM antingen genom programvara eller genom att
man använder en inbyggd PWM enhet. Jag vet inte hur det är gjort
i detta fall. De inbyggda PWM enheterna har ibland problem att köra
traditionella RC-servon. De nämnde "servostyrning" men det framgår
inte vad det är för slags servon det handlar om.
Volvo740
Inlägg: 149
Blev medlem: 15 juli 2017, 19:11:01

Re: Varför en sådan bra precision på MCP3008 jämfört med ATm

Inlägg av Volvo740 »

Okej. Då kan vi dra slutsatsen att MCP30008 och den andra IC kretsen är mycket bättre på sin sak, än vad ATmega kan erbjuda inom samma område?
Användarvisningsbild
AndLi
Inlägg: 17101
Blev medlem: 11 februari 2004, 18:17:59
Ort: Knivsta
Kontakt:

Re: Varför en sådan bra precision på MCP3008 jämfört med ATm

Inlägg av AndLi »

Nej, den den enda slutsats vi kan dra är att du drar förhastade slutsatser....

Icecap studie av datablad tyder ju på att de ska kunna prestera likvärdigt...
Problemet går sannolikt att hitta i din labbuppställning!
Användarvisningsbild
hawkan
Inlägg: 2618
Blev medlem: 14 augusti 2011, 10:27:40

Re: Varför en sådan bra precision på MCP3008 jämfört med ATm

Inlägg av hawkan »

Vad får du för sekvens av värden när du använde mcp3008?
På de mikroprocessorer med ADC som jag testat ser jag typiskt att de skiljer +- 1 siffra, dock inte riktigt så ofta som det gör för dej.

Nu har jag ingen aning alls vad du gjort med pwm och timers, men atmega328 har en 16-bitars timer för pwm och pca9685 är 12-bitars så nog borde atmega328 vara snäppet bättre där. Vill ju till att ställa in den rätt bara.
Volvo740
Inlägg: 149
Blev medlem: 15 juli 2017, 19:11:01

Re: Varför en sådan bra precision på MCP3008 jämfört med ATm

Inlägg av Volvo740 »

Min MPC gav samma siffra hela tiden om jag inte rörde något på min potentiometer. Det var en mycket enkel uppställning.
Glattnos
Inlägg: 2983
Blev medlem: 29 oktober 2009, 20:01:18

Re: Varför en sådan bra precision på MCP3008 jämfört med ATm

Inlägg av Glattnos »

Om du använder Arduinos kod-bibliotek så är det mycket där som inte är optimerat och det är inte ATmegans fel

MPC:n är ju dessutom en "successive approximation ADC" vilket verkar betyda att den gör viss filtrering så den faktiskt är mindre exakt(men istället stabilare) just för att den inte "fladdrar"
Borre
Inlägg: 4570
Blev medlem: 14 juni 2007, 15:43:50
Ort: Hälsingland

Re: Varför en sådan bra precision på MCP3008 jämfört med ATm

Inlägg av Borre »

Sätt en liten kondensator mellan ingången och jord, 100nF eller så, efter din potentiometer och gör om testet. Det ger dig ett lågpassfilter och en viss kapacitans på ingången vilket ger dig en stabilare mätning.
Användarvisningsbild
rvl
Inlägg: 5775
Blev medlem: 5 april 2016, 14:58:53
Ort: Helsingfors

Re: Varför en sådan bra precision på MCP3008 jämfört med ATm

Inlägg av rvl »

Ja Arduinobilioteket kanske inte stänger ner digitalsidan för att minimera störningar till AD:n när samplet tas?

Kör man en Arduino matad från USB och med matningsspänningen som ADreferens, så ska man inte skylla på själva AD:n om det inte blir så bra som man väntat sig. Om ännu datorns nätsladd sitter i ett ojordat uttag, så kan det bli riktigt fladdrigt.

AVR ska ha en kondensator på referenspinnen oberoende av vald referens. Minns inte om Arduino har kondensator där.
Volvo740
Inlägg: 149
Blev medlem: 15 juli 2017, 19:11:01

Re: Varför en sådan bra precision på MCP3008 jämfört med ATm

Inlägg av Volvo740 »

Okej!

Så en ATmega med rätt uppställning, ska minst vara lika bra som en MPC3008 och PWM modulen?
Allt som krävs är ett lågpassfilter?
Volvo740
Inlägg: 149
Blev medlem: 15 juli 2017, 19:11:01

Re: Varför en sådan bra precision på MCP3008 jämfört med ATm

Inlägg av Volvo740 »

hawkan skrev:Vad får du för sekvens av värden när du använde mcp3008?
På de mikroprocessorer med ADC som jag testat ser jag typiskt att de skiljer +- 1 siffra, dock inte riktigt så ofta som det gör för dej.

Nu har jag ingen aning alls vad du gjort med pwm och timers, men atmega328 har en 16-bitars timer för pwm och pca9685 är 12-bitars så nog borde atmega328 vara snäppet bättre där. Vill ju till att ställa in den rätt bara.
ATmega328 har 8 bits PWM.
Skriv svar