ATtiny85 बिजली की खपत डबल की उम्मीद है


9

मैं एक ATTiny85 एक बैटरी बंद चलाने के लिए कोशिश कर रहा हूँ। मैंने इसे 16.384 मेगाहर्ट्ज क्रिस्टल से विभाजित किया है, डिवाइड-बाय -8 फ्यूज सेट के साथ। Vcc 3.3 वोल्ट है। डेटाशीट में चित्र 22-7 कहता है कि निष्क्रिय ( set_sleep_mode(SLEEP_MODE_IDLE); sleep_mode();) पर, इसे लगभग 300 theA खींचना चाहिए। वास्तविक तथ्य में, मैं इसे 850 ,A की तरह आकर्षित करता हूं। मैं यह पता नहीं लगा सकता कि बिजली की खपत दोगुनी क्यों है। मैंने टाइमर 0 को छोड़कर पीआरआर में सब कुछ बंद कर दिया है, जिसे मैंने हर 25 एमएस में बाधित करने के लिए कॉन्फ़िगर किया है। इसलिए इसे अपना अधिकांश समय बेकार की अवस्था में बिताना चाहिए, जो कि सबसे अच्छा मैं दे सकता हूं जिसे मैं अभी भी गिनना चाहता हूं।

फ़्यूज़ 0x7f, 0xdf, 0xff हैं।

यह कोड इस परीक्षण के लिए चल रहा है:

#include <Arduino.h>
#include <EEPROM.h>
#include <avr/sleep.h>
#include <avr/power.h>

#define P0 0
#define P1 1
#define P_UNUSED 2

ISR(TIMER0_COMPA_vect) {
  // do nothing - just wake up
}

void setup() {
  power_adc_disable();
  power_usi_disable();
  power_timer1_disable();
  //PRR = _BV(PRADC) | _BV(PRTIM1) | _BV(PRUSI); // everything off but timer 0.
  TCCR0A = _BV(WGM01); // mode 2 - CTC
  TCCR0B = _BV(CS02) | _BV(CS00); // prescale = 1024
  // xtal freq = 16.384 MHz.
  // CPU freq = 16.384 MHz / 8 = 2.048 MHz
  // count freq = 2.048 MHz / 1024 = 2000 Hz
  OCR0A = 50; // 25 msec per irq
  TIMSK = _BV(OCIE0A); // OCR0A interrupt only.

  set_sleep_mode(SLEEP_MODE_IDLE);

  pinMode(P_UNUSED, INPUT_PULLUP);
  pinMode(P0, OUTPUT);
  pinMode(P1, OUTPUT);
  digitalWrite(P0, LOW);
  digitalWrite(P1, LOW);

  while(1) { sleep_mode(); }
}
void loop() {}

1
क्या आपने तुलनित्र को मार दिया?
इग्नासियो वाज़क्वेज़-अब्राम्स

1
क्या आपने कुछ तरकीबों पर एक नज़र डाला है जो जिलबस लड़के ने किया था? यहां देखें (नीचे पढ़ना शुरू करें): jeelabs.org/tag/lowpower
RJR

1
@RJR मैंने देख लिया, और दुर्भाग्य से उनकी बहुत सारी चालें काम नहीं करेंगी क्योंकि मैं केवल SLEEP_MODE_IDLE का उपयोग कर सकता हूं क्योंकि मुझे टाइमर चालू रखने की आवश्यकता है। यह एप्लिकेशन एक घड़ी है।
nsayer

1
यदि यह एक घड़ी है, तो क्या मैं आंतरिक दोलक बंद करने और घड़ी 2 पर घड़ी क्रिस्टल का उपयोग करते हुए प्रहरी बाधा को दूर करने का सुझाव दे सकता हूं? फिर आप गहरी नींद का उपयोग कर सकते हैं। मुझे लगता है कि उस बारे में एक jeelabs ब्लॉग पोस्ट भी कहीं है।
आरजेआर

1
मेरे द्वारा देखे जाने वाले सभी गोलगप्पे बताते हैं कि वे बाहरी आरटीसी मॉड्यूल का उपयोग कर रहे हैं। यदि आपके पास RTC है, तो, हाँ, आप वॉचडॉग और आंतरिक ऑसिलेटर का उपयोग कर सकते हैं क्योंकि CPU घड़ी महत्वपूर्ण नहीं है। इस मामले में, हालांकि, मैं क्रिस्टल की सटीकता चाहता हूं। और यह भी, यह एक ATTiny85 है - कोई टाइमर 2 नहीं है, सिर्फ 0 और 1 है, और टाइमर 1 टाइमर की तुलना में अधिक शक्ति के एक आदेश की खपत करता है। 0. मुझे नहीं पता कि आप बिना एटीटी के एक क्रिस्टल को कैसे हुक करेंगे सिस्टम क्लॉक के अलावा किसी भी अतिरिक्त बाहरी घटक।
nsayer

जवाबों:


6

आप कहते हैं कि चित्रा 22-7 के अनुसार डेटापत्रक में यह केवल 300μA आकर्षित करना चाहिए, लेकिन है कि ग्राफ से पता चलता है ऑपरेशन के लिए वर्तमान ड्रा के बिना घड़ी विभाजन। 16MHz पर चलने वाला एक क्रिस्टल थरथरानवाला 2MHz पर चलने वाले एक से अधिक प्रवाह खींचने के लिए बाध्य है, और 3 चरण विभक्त थोड़ा और जोड़ देगा। सवाल है - कितना अधिक?

डेटशीट यह भी बताती है कि निष्क्रिय धारा को घड़ी को विभाजित करके कम किया जा सकता है, लेकिन फिर यह नहीं कहता है कि यह कितना कम हो जाएगा। 3.3V लाइन को बाहर निकालने से पता चलता है कि यह आमतौर पर 16.4MHz पर 1.5mA के बारे में आकर्षित करेगा, और 850µA एक महत्वपूर्ण कमी है - लेकिन क्या यह कम होना चाहिए?

यदि आप आने वाले बोर्डों पर कम आवृत्ति के क्रिस्टल का उपयोग नहीं कर सकते हैं, तो ऐसा कुछ भी नहीं हो सकता है जो आप कर सकते हैं। हालाँकि, जब आपके पास एक ब्रेडबोर्ड पर सर्किट होता है, तो आप कम से कम 2MHz क्रिस्टल की कोशिश कर सकते हैं, यह देखने के लिए कि क्या वास्तव में समस्या है।

यहां छवि विवरण दर्ज करें


ठीक है। मैं काट लूंगा। मैं आज स्टोर पर जाऊंगा और 2 MHz क्रिस्टल उठाऊंगा और बिना किसी क्लॉक डिवीजन के चिप को री-फ्यूज करके चेक करूंगा।
nsayer

एक और कठिनाई 2 ^ x क्रिस्टल आवृत्तियों की आवश्यकता है। मैं दुकान पर गया और एक 4.096 मेगाहर्ट्ज एक पाया, लेकिन 1.024 और 2.048 को ढूंढना मुश्किल है। लेकिन 2 ^ x घड़ी का उपयोग नहीं करने से एक प्रीस्केल और OCR0A मान लेना कठिन हो जाता है, जिसके परिणामस्वरूप एक दूसरे अवरोध का भी परिणाम होता है। लेकिन अगर 8.192 मेगाहर्ट्ज 16 से विभाजित महत्वपूर्ण शक्ति को बचाता है, तो मैं निश्चित रूप से 16.384 से अधिक 32 से विभाजित होकर खुश रहूंगा।
nsayer

2
जगह में एक 4.096 मेगाहर्ट्ज क्रिस्टल और 8 के एक सीपीयू घड़ी प्रीस्केल मूल्य के साथ, यह अब लगभग 450 .A खींचता है।
nsayer

कुछ साल देर हो गई, लेकिन आरटीसी को क्यों न खरीदा जाए और इसका उपयोग पीपीएस किया जाए, प्रोसेसर को मुश्किल से सोएं और इसे केवल रुकावट पर जगाएं।
हिलारिएक

3

मैं उस चिप के साथ एक समान मुद्दा था। बिजली की खपत उम्मीद से 30% अधिक थी।

मुद्दे अप्रयुक्त GPIO थे!

उन्हें इनपुट के रूप में कॉन्फ़िगर किया गया और फ्लोटिंग छोड़ दिया गया। एक स्पष्ट परिभाषित इनपुट राज्य की कमी ने GPIO ड्राइवर को बहुत अधिक खपत किया जो कि निर्दिष्ट है।

उत्तर पुल-अप को सक्षम करने या अप्रयुक्त पिन को आउटपुट के रूप में कॉन्फ़िगर करने के लिए था।

क्या आप सुनिश्चित हैं कि पिन सही तरीके से सेट हैं? आपके कोड में ऐसा लगता है, लेकिन क्या आपने जांच की?


खैर, बकवास। यदि pinMode(P_UNUSED, INPUT_PULLUP);पर्याप्त नहीं है, तो डब्ल्यूटीएफ?
nsayer

हाँ, लेकिन कभी-कभी यह पर्याप्त नहीं होता है। उदाहरण के लिए, आपके पास ADC इनपुट या एनालॉग इनपुट डिफ़ॉल्ट रूप से हो सकते हैं, चाहे आप जिस दिशा में प्रोग्राम करें। वहां, आपको पहले माध्यमिक फ़ंक्शन को अक्षम करना होगा। यही मेरा मतलब है "जाँच" से।
Blup1980

यह एक ATTiny85 है। 6 पिन हैं, लेकिन उनमें से 3 RESET और दो ऑक्सटल पिन हैं। उनमें से दो आउटपुट हैं और एक P_UNUSED है। पूरे एडीसी को स्पष्ट रूप से संचालित किया गया है। मैं अन्य 3 पिन पर INPUT_PULLUP चाल की कोशिश करूँगा, लेकिन मुझे संदेह है कि यह कुछ भी नहीं बदलेगा। Tiny45 के लिए इरेटा है जो बिजली की खपत के कारण OUTPUT को xtal पिन सेट नहीं करने की बात करता है।
nsayer

जोड़ने pinMode(3, INPUT_PULLUP);और 4 और 5 के लिए एक ही कुछ नहीं किया।
nsayer

1

मैं इसे एक अलग परियोजना के लिए जोड़ना चाहूंगा, मैंने यह प्रश्न पूछा , और उत्तर ने नाटकीय रूप से इस प्रश्न को भी प्रभावित किया। समाशोधन ADCSRAने निष्क्रिय खपत को यह बता दिया कि 22-6 का आंकड़ा क्या कहता है - यह माना जाता है - 500 kHz के विभाजित सिस्टम क्लॉक रेट में लगभग 100 atA - और यह पोस्ट-विभाजित घड़ी की आवृत्ति है, न कि क्रिस्टल आवृत्ति।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.