ATTINY85 และ POT

Sep 22 2020

ฉันต้องการอ่านค่าโพเทนชิออมิเตอร์จาก ATTINY85 ฉันมีหม้อขนาดใหญ่ 10K แต่สำหรับกรณีการใช้งานนี้ฉันต้องการให้มีขนาดเล็กมากดังนั้นฉันจึงใช้ 2.4K ที่กู้คืนซึ่งเป็นชนิดที่บัดกรีลงบน PCB โดยตรง

ฉันใช้ tinkercad เพื่อสร้างต้นแบบโครงการของฉันและฉันกำลังเผชิญกับปัญหาแปลก ๆ ทุกครั้งที่ฉันอ่านจาก POT Pin ฉันจะได้รับค่า 512 (โดยใช้ดีบักเกอร์)

นี่คือภาพหน้าจอของต้นแบบของฉัน:

เป้าหมายคือการจ่ายไฟให้กับวงจรและหลอดไฟ (ไม่ว่าจะมีอะไรอยู่ก็ตามให้พิจารณาว่าเป็นเพียงโหลด) ด้วยแบตเตอรี่ 9V ใช้ตัวควบคุม 5V เพื่อจ่ายไฟ ATTINY85 และใช้ทรานซิสเตอร์ NPN เพื่อเปิดหลอดไฟ / โหลดหรือ ปิด

สำหรับข้อมูลการตั้งค่าตัวควบคุมและทรานซิสเตอร์ทั้งหมดได้รับการทดสอบและทำงานได้อย่างมีเสน่ห์

นี่คือรหัสที่ฉันเขียนสำหรับกรณีนี้:

void setup()
{
  pinMode(PB0, INPUT);
}

int potValue = 0;

void loop()
{
  potValue = analogRead(PB0);
  delay(100);
}

ไม่แฟนซีจริงใช่มั้ย? ตอนนี้ไม่ว่าจะใช้ POT อะไรและฉันลอง 2.4K, 10K และสูงถึง 100K ค่าที่ ATTINY อ่านจะเป็น 512 เสมอ

คุณเห็นสิ่งผิดปกติในการตั้งค่านี้หรือไม่? อาจเป็นข้อผิดพลาดใน tinkercad หรือไม่? (ฉันจะแปลกใจนะ)

ฉันสามารถลองแบ่งปันวงจรนี้ภายใน tinkercad ได้หากมีคนเต็มใจที่จะดู ...

แก้ไข: ฉันเพิ่งลองใช้ PB2 ตามที่แนะนำ แต่ไม่ใช่ค่าเท่ากับ 58 เสมอไป:

คำตอบ

2 StarCat Sep 22 2020 at 20:32

พอร์ต PB0 ไม่ได้เป็นขา ADC (อนาล็อก) บน ATTiny85

หมุดที่มีของ ATTiny85 (จากแผ่นข้อมูล Atmel ATtiny 25, 45, 85):

เลือก PB2, PB3, PB4 หรือ PB5 หากคุณต้องการอินพุตแบบอนาล็อก

ข้อมูลเพิ่มเติม: เมื่อสร้างขึ้นใน TinkerCAD การใช้ PB2 เป็นอินพุตแบบอะนาล็อกดูเหมือนจะทำงานไม่ถูกต้องและสร้างค่าคงที่ อย่างไรก็ตามการใช้ PB3 ทำงานได้อย่างถูกต้อง นี่อาจเป็นข้อบกพร่องใน TinkerCAD