Varför en sådan bra precision på MCP3008 jämfört med ATmega?
Varför en sådan bra precision på MCP3008 jämfört med ATmega?
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.
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.
Re: Varför en sådan bra precision på MCP3008 jämfört med ATm
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)?
Vad är det för kod, vilken ström-matning, vilken typ av servo och hur ser du "fladder"(oscilloskop eller fladdrar servot)?
Re: Varför en sådan bra precision på MCP3008 jämfört med ATm
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.
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.
Re: Varför en sådan bra precision på MCP3008 jämfört med ATm
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.
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.
Re: Varför en sådan bra precision på MCP3008 jämfört med ATm
Jag uppfattade min ATmega som stabil. Men läsa av analoga värden så såg jag liknande: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)?
667
668
666
667
666
665
668
667
667
665
664
668
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?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 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.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.
Re: Varför en sådan bra precision på MCP3008 jämfört med ATm
> 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.
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.
Re: Varför en sådan bra precision på MCP3008 jämfört med ATm
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?
Re: Varför en sådan bra precision på MCP3008 jämfört med ATm
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!
Icecap studie av datablad tyder ju på att de ska kunna prestera likvärdigt...
Problemet går sannolikt att hitta i din labbuppställning!
Re: Varför en sådan bra precision på MCP3008 jämfört med ATm
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.
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.
Re: Varför en sådan bra precision på MCP3008 jämfört med ATm
Min MPC gav samma siffra hela tiden om jag inte rörde något på min potentiometer. Det var en mycket enkel uppställning.
Re: Varför en sådan bra precision på MCP3008 jämfört med ATm
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"
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"
Re: Varför en sådan bra precision på MCP3008 jämfört med ATm
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.
Re: Varför en sådan bra precision på MCP3008 jämfört med ATm
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.
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.
Re: Varför en sådan bra precision på MCP3008 jämfört med ATm
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?
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?
Re: Varför en sådan bra precision på MCP3008 jämfört med ATm
ATmega328 har 8 bits PWM.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.