এটিটিআই 85 বিদ্যুৎ খরচ দ্বিগুণ প্রত্যাশিত


9

আমি ব্যাটারি চালানোর জন্য এটিটিইনি 85 পাওয়ার চেষ্টা করছি। আমি এটি 16.384 মেগাহার্টজ স্ফটিক থেকে ডিভাইড-বাই -8 ফিউজ সেট সহ এসেছি। ভিসি 3.3 ভোল্ট। ডাটাশিটে 22-7 চিত্র বলেছে যে অলস ( set_sleep_mode(SLEEP_MODE_IDLE); sleep_mode();) এ এটি 300 ডিগ্রি এ। প্রকৃতপক্ষে, আমি এটি 850 likeA এর মতো আরও আঁকতে দেখছি। আমি কেন বিদ্যুৎ খরচ দ্বিগুণ আশা করা যায় তা বুঝতে পারি না। টাইমার0 ব্যতীত আমি PRR তে সমস্ত কিছুই বন্ধ করে দিয়েছি, যা আমি প্রতি 25 এমএসে বাধা দেওয়ার জন্য কনফিগার করেছি। সুতরাং এটির বেশিরভাগ সময় অলস অবস্থায় ব্যয় করা উচিত, যা আমি এখনও টাইমারদের গণনা করতে চাই the

ফিউজগুলি 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
আপনি কি তুলনাকারী মেরেছেন?
Ignacio Vazquez-Abram 20

1
জিলাব লোকটি কৌতুকপূর্ণ কিছু কৌশল দেখেছেন? এখানে দেখুন (নীচে পড়া শুরু করুন): jeelabs.org/tag/lowpower
আরজেআর

1
@ আরজেআর আমি একবার দেখেছি এবং দুর্ভাগ্যক্রমে তাদের অনেক কৌশল কাজ করবে না কারণ আমি কেবল SLEEP_MODE_IDLE ব্যবহার করতে পারি কারণ আমার টাইমার চালিয়ে যাওয়া দরকার। এই অ্যাপ্লিকেশনটি একটি ঘড়ি।
nsayer

1
যদি এটি একটি ঘড়ি হয় তবে আমি কি অভ্যন্তরীণ অসিলেটরটি চালাবার এবং ওয়াচডোগ বাধা দেওয়ার জন্য টাইমার 2 এ একটি ওয়াচ স্ফটিক ব্যবহার করার পরামর্শ দিতে পারি? তারপরে আপনি গভীর ঘুম ব্যবহার করতে পারেন। আমি মনে করি এটি সম্পর্কে কোথাও একটি জিলাব ব্লগ পোস্ট রয়েছে।
আরজেআর

1
আমি যে সমস্ত গুগলিং দেখি সেগুলিই বোঝায় যে তারা কোনও বাহ্যিক আরটিসি মডিউল ব্যবহার করছে। আপনার যদি আরটিসি থাকে, তবে হ্যাঁ, আপনি প্রহরী এবং অভ্যন্তরীণ দোলকটি ব্যবহার করতে পারেন কারণ সিপিইউ ঘড়িটি গুরুত্বপূর্ণ নয়। এই ক্ষেত্রে, তবে আমি স্ফটিকের নির্ভুলতা চাই। এবং এটিও এটিটিইএনজি 85 - এখানে টাইমার 2 নেই, কেবল 0 এবং 1 নেই এবং টাইমার 1 টি টাইমার 0 এর চেয়ে বেশি মাত্রার ক্রম ব্যবহার করে I আমি জানি না আপনি কীভাবে এটিটি টিনির কাছে স্ফটিকটি আঁকলেন d সিস্টেমের ঘড়ি ছাড়া অন্য কোনও বাহ্যিক উপাদান।
nsayer

উত্তর:


6

আপনি বলছেন যে ডেটাসিটে চিত্র 22-7 অনুসারে এটি কেবল 300µA আঁকা উচিত, তবে সেই গ্রাফটি ক্লক বিভাজন ছাড়াই চলমান অঙ্কনটি প্রদর্শন করে । 16MHz এ চলমান একটি স্ফটিক অসিলেটর 2MHz এ চলমান একের চেয়ে আরও বেশি বর্তমান আঁকতে বাধ্য, এবং 3 স্টেজ ডিভাইডারটি আরও কিছু যোগ করবে। প্রশ্নটি - আরও কত ?

ডাটাশিটটি আরও জানায় যে ঘড়িটি নীচে ভাগ করে অলস কারেন্ট হ্রাস করা যেতে পারে, তবে এটি কতটুকু হ্রাস পাবে তা বলে না । 3.3V লাইনটি এক্সট্রপোলেটিংয়ের পরামর্শ দেয় যে এটি সাধারণত 16.4MHz প্রায় 1.5mA আঁকবে এবং 850µA একটি উল্লেখযোগ্য হ্রাস - তবে এটি কম হওয়া উচিত?

আপনি যে বোর্ডগুলি নিয়ে এসেছেন সেগুলিতে যদি আপনি নিম্ন ফ্রিকোয়েন্সি স্ফটিক ব্যবহার করতে না পারেন তবে আপনার করার মতো কিছুই নাও থাকতে পারে। তবে, আপনার যখন একটি ব্রেডবোর্ডে সার্কিট রয়েছে তখন আপনি কমপক্ষে একটি 2 মেগাহার্টজ স্ফটিক চেষ্টা করতে পারেন, এটি দেখতে আসলেই সমস্যাটি কিনা।

এখানে চিত্র বর্ণনা লিখুন


ঠিক আছে. আমি কামড় দেব। আমি আজ দোকানে যাব এবং একটি 2 মেগাহার্টজ স্ফটিক বাছাই করব এবং কোনও ঘড়ি বিভাজনের জন্য চিপটি পুনরায় ফিউজ করব এবং এটি পরীক্ষা করব।
nsayer

আর একটি অসুবিধা হ'ল 2 ^ x স্ফটিক ফ্রিকোয়েন্সি প্রয়োজন। আমি দোকানে গিয়ে একটি 4.096 মেগাহার্টজ পেয়েছি, তবে 1.024 এবং 2.048 খুঁজে পাওয়া শক্ত। তবে 2 ^ x ঘড়ি ব্যবহার না করা একটি প্রেসকেল এবং OCR0A মান বাছাই করা শক্ত করে তোলে যার ফলে দ্বিতীয় বিঘ্ন এমনকি ভগ্নাংশের ফলাফল হয়। তবে যদি 8.192 মেগাহার্টজ 16 টি দ্বারা বিভক্ত হয়ে যায় উল্লেখযোগ্য শক্তি সঞ্চয় করে তবে আমি অবশ্যই 16.384 এরও বেশি 32 টি দিয়ে ভাগ করে খুশি হব
nayayer

2
একটি জায়গায় 4.096 মেগাহার্টজ স্ফটিক এবং 8 এর সিপিইউ ক্লক প্রেসকেল মান, এটি এখন প্রায় 450 µA আঁকবে।
nsayer

কয়েক বছর দেরীতে, তবে কেন আরটিসি কিনে এটি পিপিএস ব্যবহার করবেন না, প্রসেসরের কঠোর ঘুম করুন এবং এটি কেবল বাধিত অবস্থায় জাগ্রত করুন।
হিলরিয়াক

3

সেই চিপ নিয়ে আমারও একই সমস্যা ছিল। পাওয়ার খরচ প্রত্যাশার চেয়ে 30% বেশি ছিল।

বিষয়টি অব্যবহৃত জিপিআইও!

সেগুলি ইনপুট এবং বাম ভাসমান হিসাবে কনফিগার করা হয়েছিল। সুস্পষ্ট সংজ্ঞায়িত ইনপুট স্থিতির অভাব GPIO ড্রাইভারকে নির্দিষ্ট করে যা অনেক বেশি ব্যবহার করেছে।

উত্তরটি ছিল পুল-আপগুলি সক্ষম করা বা অব্যবহৃত পিনগুলি আউটপুট হিসাবে কনফিগার করা।

আপনি কি নিশ্চিত যে পিনগুলি সঠিকভাবে সেট করা আছে? আপনার কোডে এটি মনে হয় তবে আপনি কি চেক করেছেন?


ভাল, ছি ছি যদি pinMode(P_UNUSED, INPUT_PULLUP);পর্যাপ্ত না হয় তবে ডাব্লুটিএফ?
nsayer

হ্যাঁ, তবে কখনও কখনও এটি পর্যাপ্ত হয় না। উদাহরণস্বরূপ, আপনার পিনগুলি এডিসি ইনপুট বা ডিফল্টরূপে এনালগ ইনপুট থাকতে পারে, আপনি প্রোগ্রামের দিকনির্দেশনা নির্বিশেষে। সেখানে, আপনাকে প্রথমে মাধ্যমিক ফাংশনটি অক্ষম করতে হবে। এটাই আমি "চেকিং" বলতে চাইছিলাম।
Blup1980

এটি একটি এটিটিইএন 85। এখানে 6 টি পিন রয়েছে তবে তার মধ্যে 3 টি রিসেট এবং দুটি অক্স্টাল পিন রয়েছে। এর মধ্যে দুটি হ'ল আউটপুট এবং একটি হ'ল P_UNUSED। পুরো এডিসি স্পষ্টভাবে নিচে চালিত হয়েছে। আমি অন্য 3 টি পিনে INPUT_PULLUP কৌশল চেষ্টা করব, তবে আমার সন্দেহ হয় এটি কোনও পরিবর্তন করবে না। টিনি 45 এর জন্য একটি ত্রুটি রয়েছে যা বিদ্যুৎ ব্যবহারের কারণে OUTPUT এ অক্স্টাল পিন স্থাপন না করার বিষয়ে কথা বলে।
nsayer

pinMode(3, INPUT_PULLUP);4 এবং 5 এর জন্য যুক্ত এবং একই কিছু কিছুই করেনি।
nsayer

1

আমি এটি একটি পৃথক প্রকল্পের জন্য যুক্ত করতে চাই, আমি এই প্রশ্নটি জিজ্ঞাসা করেছি , এবং উত্তরটি নাটকীয়ভাবে এই প্রশ্নটিকেও প্রভাবিত করেছে। ক্লিয়ারিং ADCSRAনিষ্ক্রিয় খরচ 22-6 চিত্র অনুযায়ী নেওয়ার কথা বলেছিল - 500 কিলাহার্জ বিভক্ত সিস্টেম ক্লক হারে প্রায় 100 µA - এবং এটি পোস্ট-বিভক্ত ঘড়ির ফ্রিকোয়েন্সি নয়, স্ফটিক ফ্রিকোয়েন্সি।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.