আমি কীভাবে একটি সঠিক সময় পেতে পারি?


16

আমি একটি আরডুইনো ব্যবহার করে একটি ঘড়ি তৈরি করেছি, তবে সময়টি বয়ে যেতে পারে বলে মনে হচ্ছে। আমি রোলওভার ইস্যু সম্পর্কে সচেতন ; এক সপ্তাহের মধ্যে প্রায় 15 মিনিটের মধ্যে এই ঘড়িটি প্রবাহিত হবে বলে মনে হয়।

আমি ডিজি-কি থেকে এই অনুরণকের সাথে একটি কাস্টম পিসিবি ব্যবহার করছি । কোডটি প্রতিটি লুপের শুরুতে মিলিস () ফাংশনটি পড়ে এবং সেই মান থেকে কাজ করে।

আমার প্রশ্ন হ'ল: আমি কীভাবে একটি আরডিনো দিয়ে সময়কে পরিমাপ করতে পারি, একটি পাসেবল ডেস্ক ঘড়ি তৈরির জন্য সঠিকভাবে?


3
মিলিসেকেন্ড ফাংশনটি একটি বাধা থেকে ডেটা সরবরাহ করা হয়, যা চালাতে বেশ কয়েকটি ঘড়ি চক্র গ্রহণ করে। এটি প্রতিটি টিকের সাথে একটি সংক্ষিপ্ত পরিমাণ যোগ করে।
TheDoctor

3
@ ডক্টর: এটি ভুল। বিঘ্নটি ড্রাইভকারী হার্ডওয়্যার টাইমারকে ধীর করে না millis()
এডগার বোনেট

উত্তর:


15

দ্রষ্টব্য: যদিও আমার উত্তরটি গৃহীত হয়েছিল এবং এর চেয়ে বেশি ভোটের সংখ্যা রয়েছে, আপনি কীভাবে আপনার আরডিনোকে আরটিসি না করে সময় রাখতে পারেন সে বিষয়ে আপনি এডগার বোনেটের দুর্দান্ত উত্তরটি পড়েছেন তা নিশ্চিত করুন।

আমি DS1307 রিয়েল টাইম ক্লকটি ব্যবহার করতে বেশ সফল হয়েছি। এটির ডেটাশিটের একটি লিঙ্ক এখানে ।

নীচে এর কয়েকটি বৈশিষ্ট্য রয়েছে:

  • এটি আরডুইনোর সাথে যোগাযোগের জন্য আইসি ইন্টারফেস ব্যবহার করে, সঠিক লাইব্রেরিগুলি (নেট এ উপলব্ধ) ব্যবহার করে প্রোগ্রাম করা সহজ করে তোলে।

  • এটি এসসিএল এবং এসডিএ পিনের মাধ্যমে যথাক্রমে আরডুইনোর সাথে সংযুক্ত (যথাক্রমে এনালগ এ 4 এবং এ 5), কেবলমাত্র 2 পিন ব্যবহার করে।

  • এটি চালানোর জন্য খুব কম বাহ্যিক উপাদান প্রয়োজন।

  • আইটি একটি মুদ্রা সেল ব্যাটারির সাথে সংযুক্ত হতে পারে তাই এটি আরডুইনো বন্ধ থাকাকালীন সময় রাখে। এর নিম্ন শক্তি মোডে, মুদ্রা কোষের ব্যাটারি বছরের পর বছর ধরে চলে।

  • এটি খুব অল্প বয়ে যায় (আমার ক্ষেত্রে এটি প্রতি সপ্তাহে কয়েক সেকেন্ডের মধ্যে কেবল চালিত হয়)।

  • এটা খুব ব্যয়বহুল নয়।

আপনি যদি আরটিসি ব্যবহার না করার উদ্দেশ্যে না করেন, আপনি ফার্নেল বা এই অন্যটির মতো স্ফটিক অসিলেটর মডিউলটির জন্য আরডুইনোকে ঘড়ি সরবরাহ করতে ব্যবহৃত স্ফটিকটি প্রতিস্থাপন করতে পারেন । তারা নীচের চিত্রগুলির মতো 4 পিন প্যাকেজ এ আসে। তারা আপনার আরডুইনোর জন্য আরও অনেক সুনির্দিষ্ট ঘড়ি তৈরি করবে।

স্ফটিক দোলক চিত্র স্ফটিক দোলক চিত্র স্ফটিক দোলক চিত্র

উল্লিখিত উভয় মডিউল 50 পিপিএম সহনশীলতা রয়েছে এবং 5 ভি তে চালিত হয়।

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

স্ফটিক দোলক


DS1302 কি যথেষ্ট ভাল বা আমার DS1307 এ যাওয়া উচিত?
কেলি এস ফরাসী

14

একটি ঘড়ি তৈরি করতে আপনার আরটিসি দরকার নেই: এটিএমগা চিপে আরটিসি নিজেই দায়িত্ব পালনের জন্য প্রয়োজনীয় সমস্ত হার্ডওয়্যার রয়েছে। এটি এখানে:

  1. একটি 32768 হার্জ ওয়াচ স্ফটিক পান: হয় তা কিনুন বা একটি পুরানো ঘড়ি বিচ্ছিন্ন করুন। এই স্ফটিকগুলি, বিশেষত সময় রাখার জন্য ডিজাইন করা হয়েছে, একটি অত্যন্ত ছোট তাপমাত্রা প্রবাহ থাকে। আপনি যদি আরটিসি চিপ ব্যবহার করতে চান তবে তাদের মধ্যে একটিরও আপনার প্রয়োজন হবে।

  2. 8 মেগাহার্টজ আরসি অসিলেটর চালানোর জন্য আপনার এটিমেগার ফিউজগুলি কনফিগার করুন। এটি আপনার millis()ফাংশনটিকে মারাত্মকভাবে ভুল করে তুলবে এবং এক্সটিএল 1 এবং এক্সটিএল 2 পিনগুলি মুক্ত করবে।

  3. TOSC1 এবং TOSC2 পিনের সাথে ঘড়ির স্ফটিকটি সংযুক্ত করুন। এগুলি XTAL1 এবং XTAL2 (328P-তে 9 এবং 10) এর মতো একই পিন are বিভিন্ন নামগুলি বিভিন্ন ফাংশন বোঝাতে ব্যবহৃত হয়।

  4. অ্যাসিক্রোনাস অপারেশন, সাধারণ গণনা মোড, প্রেসক্যালার 128 এ সেট করার জন্য টাইমার / কাউন্টার 2 কনফিগার করুন এবং টাইমার ওভারফ্লো বিঘ্ন সক্ষম করুন।

এখন আপনি প্রতি সেকেন্ডে একবারের খুব স্থিতিশীল হারে একটি TIMER2_OVF বাধা পেয়ে যাবেন। আইএসআর-এ আপনাকে কেবল এক সেকেন্ডের সাহায্যে ক্লক ডিসপ্লে এগিয়ে নিতে হবে। বিঘ্নগুলির মধ্যে, আপনি এমসিইউটিকে খুব গভীর ঘুমে রাখতে পারেন (পাওয়ার-সেভ স্লিপ মোড: টাইমার / কাউন্টার 2 ব্যতীত আর কিছুই চালায় না) এবং কয়েক বছর ধরে এএ কোষে চলতে পারে। প্রদর্শিত না হলে শক্তি ক্ষুধার্ত, স্পষ্টতই।

আমার 24 ঘন্টা এক হাতের প্রাচীরের ঘড়িটি তৈরি করতে আমি ঠিক এটি করেছি । এই লিঙ্কটি ফরাসি ভাষায় মূল ডকুমেন্টেশনের ইংরেজি অনুবাদকে নির্দেশ করে।

কোয়ার্টজ ক্যালিব্রেশন

আপনি যদি আপনার কোয়ার্টজকে ক্রমাঙ্কণ না করেন, তবে আপনি সপ্তাহে সাধারণত কয়েক সেকেন্ডের মধ্যে একটি উল্লেখযোগ্য প্রবাহের আশা করতে পারেন । ড্রিফট রেট এমসইউতে ক্রিস্টালকে সংযুক্ত করে এমন ট্রেসগুলির স্ট্রে ক্যাপাসিট্যান্সের উপর নির্ভর করে। নীতিগতভাবে, এটি কিছু অতিরিক্ত, সূক্ষ্মভাবে সুরক্ষিত ক্যাপাসিটেন্স যোগ করে মুছে ফেলা হতে পারে। এটি লক্ষণীয় যে আপনার আরটিসি-তে একই ড্রিফট সমস্যা হবে

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

বামন সংশোধন করার জন্য অ্যালগরিদম খুব সহজ। পরিমাপিত ড্রিফ্ট থেকে, আপনি বাধাগুলির মধ্যে সুনির্দিষ্ট বিলম্ব অনুমান করেন যা 10 9  ন্যানোসেকেন্ডের খুব কাছাকাছি হওয়া উচিত :

#define ONE_SECOND    1000000000  // in nanoseconds
#define ONE_INTERRUPT  999993482  // for example

ISR(TIMER2_OVF_vect)
{
    static uint32_t unaccounted_time;

    unaccounted_time += ONE_INTERRUPT;
    while (unaccounted_time >= ONE_SECOND) {
        advance_display_by_one_second();
        unaccounted_time -= ONE_SECOND;
    }
}

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

এই জাতীয় ক্রমাঙ্কনটি আরটিসির জন্যও করা যেতে পারে তবে এটি উল্লেখযোগ্যভাবে জটিল হবে কারণ আরটিসি একটি ভাঙ্গা-ডাউন আকারে সময়টি রিপোর্ট করে যা প্রাকৃতিকভাবে গাণিতিক ক্রিয়াকলাপগুলিতে leণ দেয় না।


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

2
@ জন ওয়ালথুর: ধন্যবাদ! এখন আপনি আমাকে একটি অনুবাদ লিখতে উত্সাহিত করছেন। :-)
এডগার বোনেট

2
@ জনওয়ালথুর: সম্পন্ন! লিঙ্কটি এখন ইংরেজি অনুবাদকে নির্দেশ করে।
এডগার বোনেট

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

@ কেলি.ফ্রিঞ্চ: আমার বাক্যটি ছিল "এটিএমগা চিপে আরটিসি নিজেই দায়িত্ব পালনের জন্য প্রয়োজনীয় সমস্ত হার্ডওয়্যার রয়েছে " (জোর যুক্ত করা হয়েছে)। তবে তারপরে এটি লক্ষ্য করা গুরুত্বপূর্ণ যে সর্বব্যাপী DS1307 সহ বেশিরভাগ আরটিসি-র কাজ করার জন্য একটি বাহ্যিক স্ফটিকের প্রয়োজন। এটিমেগা আলাদা নয়: আরটিসি নিজেই প্রতিস্থাপন করার জন্য এটির প্রয়োজনীয় সমস্ত কিছুই রয়েছে , তবে আপনাকে যেভাবেই আরটিসিতে সংযোগ করতে হবে এমন স্ফটিকটি প্রতিস্থাপন করতে হবে না। দয়া করে মনে রাখবেন একটি আরটিসি মডিউল হয় আরো ঠিক চেয়ে একটি আরটিসি, যেমন স্ফটিক অন্তর্ভুক্ত আছে।
এডগার বোনেট

6

আপনার নির্ধারিত রেজোনেটরটির 0.3% স্থায়িত্ব রয়েছে, যেখানে স্ফটিক বা স্ফটিক দোলক (রিকার্ডো দ্বারা উল্লিখিত) 50 পিপিএম। অনেকগুণ স্থিতিশীল। এমনকি রেজনেটরের তাপমাত্রা প্রবাহকে উল্লেখ করাও ভয়ঙ্কর। সূর্যের আলো দ্বারা উত্তাপ এটি পরিবর্তন করবে। তাই দীর্ঘকাল ধরে সময় ধরে রাখার জন্য একটি অনুরণক ব্যবহার করা উচিত নয়।

সুতরাং স্ফটিক বা স্ফটিক দোলক ব্যবহার করে আপনি যা চান তা পাবেন। হয় এটিমেগায় এটি ব্যবহার করে এবং যথাক্রমে ফিউজগুলি সেট করুন বা আমাদের একটি আরটিসির সাথে সংযুক্ত করুন।


50ppm যেখানে 0.005% স্থিতিশীল?
ম্যাথু জি।

উত্তরটি সংক্ষিপ্ত রাখার জন্য আমি সেই অনুমানকে সাধারণীকরণ করি। স্থিতি স্থির করুন Res। একটি অনেক বড় সহনশীলতা আছে এবং বেশ বন্ধ হতে পারে। জন ডব্লু যেমন অভিজ্ঞতা নিচ্ছে। "সঠিক কাজের জন্য সঠিক অংশ"
mpflaga

ওহ, আমি @mpflaga পরিভাষা সম্পর্কে কৌতূহলী ছিলাম ... আমার কাছে নতুন।
ম্যাথু জি।

4

আপনি যদি রিয়েল টাইম ক্লকের মতো অতিরিক্ত হার্ডওয়্যার ব্যবহার করতে না চান (যেমন, ডিএসডিএস 1307), আপনি সমস্ত অব্যবহৃত বাধা অক্ষম করে সময়সীমার যথাযথতা উন্নত করতে পারেন। ডিফল্টরূপে আরডুইনো স্কেচগুলি বিভিন্ন বিঘ্নিত রুটিন সক্ষম করে নিয়ে আসে এবং প্রায়শই সেগুলি আপনার স্কেচের জন্য ব্যবহৃত হয় না। জারি করে এগুলি ব্যবহার করে অক্ষম করার চেষ্টা না করে আপনি এটি করতে পারেন কিনা তা দ্রুততম উপায় waynoInterrupts();


3
−1 (যদিও এটি −4 এর প্রাপ্য) কারণ: ১. আপনি যদি এগুলিকে প্রকৃতপক্ষে এগুলি না করেন তবে সমস্ত বাধা ডিফল্টরূপে অক্ষম থাকে TIMER0_OVF এর একমাত্র ব্যতিক্রম ছাড়া, যা সময় রাখার জন্য প্রয়োজন। ২.আরডিনোসের সময়কালীন নির্ভুলতা মূলত অনুরণকের গুণমানের দ্বারা সীমাবদ্ধ। ৩. millis()বাধাগুলি যদি আপনি এক সাথে এক মিলি সেকেন্ডের বেশি সময় ব্যয় করতে পরিচালিত না করেন তবে তার নির্ভুলতার কোনও ক্ষতি হয় না, সেই ক্ষেত্রে আপনার অন্যান্য সমস্যাও রয়েছে ... ৪. সাথে বাধা অক্ষম করা মোটেই সময় noInterrupts()রোধ করা millis()থেকে বিরত থাকবে !
এডগার বোনেট

2

আমি বুঝি আর্দুইনোর সাথে অনেকটা স্পিরিট সাফল্যজনক এবং মাঝে মধ্যে একটি সমস্যার মধ্য দিয়ে ট্রডিং হচ্ছে। আমি আমার কর্মক্ষেত্রের জন্য আরডুইনো (এবং এখন চিপকিট, যেহেতু এটি 10x র‌্যাম এবং 10x ঘড়ির গতি পেয়েছে) ব্যবহার করি এবং গতি বাড়ানোর জন্য এবং যত তাড়াতাড়ি সম্ভব কাজ করার জন্য আমার "পেরিফেরাল ফাংশন" দরকার।

আমি আমার একটি প্রকল্পে স্পার্কফান রিয়েল টাইম ক্লকটি ব্যবহার করি এবং এতে খুব খুশি। তাদের একটি "ডেড অন" ভেরিয়েন্টও রয়েছে

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