বোতাম বোতাম


32

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

তাহলে কোডে বাউন্স সনাক্ত করা ভাল, বা এটি হার্ডওয়ারের সাথে যত্ন নেওয়া উচিত? সম্প্রসারিত করুন.


উত্তর:


17

আমি আপনার স্যুইচ পর্যন্ত একটি সুযোগ হুক করার সুপারিশ করব (আশা করি আপনার একটি রয়েছে বা ব্যবহারের জন্য আপনার হাত পেতে পারেন)। আমি এমন একটি শিক্ষার্থীর প্রকল্প দেখেছি যার স্যুইচটিতে একটি বাউন্স ছিল যা 5v থেকে -5v অবধি 4v -3v অবধি 2v অবধি আবার 0V-এ ফিরে আসে। যখন আমরা একটি স্কোপের বর্তমান ড্রয়ের দিকে তাকালাম তখন খুব খুব বড় স্পাইক ছিল।

তার বিশেষ ক্ষেত্রে হার্ডওয়্যারটিতে তার স্যুইচটি চালু করা খুব প্রয়োজন ছিল।

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

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


আমি স্যুইচ বাউন্সের একটি চিত্র এড়িয়ে
থমাস ও

@ থমাস ও এটি বাউন্সের একটি সুন্দর মজাদার ছবি। আমি কেবল নিশ্চিত করতে চাই যে @ ভিনসেন্ট ভ্যান ডেন বার্গে বুঝতে পারে যে সমস্ত বাউন্স এর মতো দেখাবে না। এই বাউন্সটি 0-5v-এর মধ্যে সীমাবদ্ধ, এটি সর্বদা দেখতে পছন্দ করবে না।
কেলেনজব

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

@ কেলেনজব, আমি আমার স্কোপের জন্য শীঘ্রই একটি প্রিন্টার পাচ্ছি যা এইচপি-আইবি সমর্থন করে। এছাড়াও আমি আমার ক্যামেরায় "স্পোর্টস" মোডটি আবিষ্কার করেছি স্ক্যাপ স্ক্রিনের কোনও ফ্ল্যাশ ছাড়াই এবং কোনও ঝাপসা ঝাপসা ছাড়াই ভাল ছবি তুলতে পারে।
থমাস ও

1
@ লন্ডিন একটি বাস্তব-সময়ের পরিবেশে আপনি প্রচুর বিঘ্নের উপর নির্ভরশীল। আপনার যদি একটি বাধায় বাটন প্রেস থাকে তবে আপনি চান না যে কোনও একক বাটন প্রেসের মাধ্যমে আপনার রিয়েল-টাইম সিস্টেমটি বেশ কয়েকবার বাধা দেওয়া উচিত। 10 এমএস অপেক্ষা করার জন্য আপনার উত্সও উত্সর্গ করতে হবে না।
কেলেনজবি

15

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

আপনি সফ্টওয়্যার বা হার্ডওয়্যারে আত্মপ্রকাশ করুন না কেন, আপনাকে এখনও মানের পুশব্যাটন নির্বাচন করতে হবে। নিবন্ধ থেকে কুখ্যাত 157ms বোতামটি কোনও অ্যাপ্লিকেশনের জন্য কেবল উপযুক্ত নয় ।
আমি সাধারণত 32 মিমি বিরতিতে বোতামটি নমুনা করি , যা কোনও ভাল বোতামের ডিবাউন সময়টি ব্রিজ করার জন্য যথেষ্ট। আমি আল্পস এসকেকিউজি ট্যাক্ট স্যুইচগুলির বেশ অনুরাগী ।

আল্পস কৌশল সুইচ

আমি যে কয়েকটি ডিভাইস পরীক্ষা করেছি তাতে এটির প্রাথমিক বাউন্স সময়টি 10ns এরও কম ছিল। যদিও এটির 100,000 চক্রের অপারেটিং জীবন রয়েছে আমরা 200 000 এর জন্য এটি পরীক্ষা করেছি চক্র এবং তারপর 32ms debounce যথেষ্ট ছিল। (আমি অনুমান করি যে আমার আত্মপ্রকাশের আসল স্তরটি পরিমাপ করা উচিত ছিল, তবে তখন আমাদের প্রধান আগ্রহ ছিল চূড়ান্ত পণ্যের আচরণ। যাইহোক, আমরা এটিকে স্পষ্ট-ব্যতীত ব্যবহার করছিলাম))

আপনি যদি সত্যিই একটি হার্ডওয়্যার সমাধান চান তবে আমি নিবন্ধে উল্লিখিত এসআর ফ্লিপ-ফ্লপ সমাধানটিকে প্রযুক্তিগতভাবে সর্বোত্তম সমাধান হিসাবে দ্বিতীয় করব:

সার্কিট

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


12

বোতামগুলি ডাবনো করার জন্য প্রচুর (এবং প্রচুর) উপায় রয়েছে। আপনি এটি সফ্টওয়্যার বা হার্ডওয়্যারে করুন তা আপনার প্রকল্পের প্রয়োজনীয়তা এবং স্যুইচ ধরণের উপর নির্ভর করে।

এখানে বিভিন্ন পদ্ধতির কয়েকটি লিঙ্ক রয়েছে:

http://www.ganssle.com/debouncing.htm

http://hackaday.com/2010/11/09/debounce-code-one-post-to-rule-them-all/


আমি প্রশ্নটি দেখে গ্যানসেলের একটি লিঙ্ক পেতে যাচ্ছি।
কর্টুক

জ্যান্সেল নিবন্ধটি আমি এই প্রশ্নটি জিজ্ঞাসা করার কারণ ছিল, এটি আমার প্রশ্নের সাথে যুক্ত হয়েছে :) ডাবনোড কোড স্নিপেটের লিঙ্কের জন্য ধন্যবাদ।
ভিনসেন্ট ভ্যান ডেন বার্গে

নরম / হার্ডওয়্যার কখন ব্যবহার করবেন তা বোঝাতে আপনি কয়েকটি ব্যবহারের কেস সংক্ষেপণ করতে আপত্তি করবেন? (এটি সম্ভবত সাবজেক্টিভ, তবে যাই হোক আমি কিছু উদাহরণ চাই)
ভিনসেন্ট ভ্যান ডেন বার্গে

1
@ ভিনসেন্ট, কেলেনজব কীভাবে সিদ্ধান্ত নেবেন তার উত্তরে এটি সংক্ষেপে লিখেছেন। আমি আপনার লিঙ্কটিতে ক্লিক করি নি কারণ এটির একটি মজার নাম ছিল, এখন আমি এটি ক্লিক করলে আমি গ্যানসেল দেখছি!
কর্টুক

যদি এটি theকমত্য / সাধারণ নিয়ম হয় তবে প্রকৃতপক্ষে, আরও উদাহরণের প্রয়োজন নেই।
ভিনসেন্ট ভ্যান ডেন বার্গে

6

সেই নিবন্ধটি হ'ল "বাইবেল" ou যোগাযোগের বাউন্স কোনও অ্যাপ্লিকেশন নিয়ে সমস্যা হতে পারে।

সফ্টওয়্যারগুলির স্যুইচগুলি সাধারণভাবে সুনির্দিষ্ট করা ভাল কারণ নির্দিষ্ট স্যুইচগুলির জন্য বিলম্বগুলির জন্য সামঞ্জস্য করা সহজ, কারণ তাদের যোগাযোগের পরিমাণ বাউনের পরিমাণের চেয়ে আলাদা। মূল রিলিজটি প্রায়শই ত্রুটিযুক্ত করাও প্রয়োজনীয়। স্যুইচ নির্মাতারা প্রায়শই তাদের পণ্যগুলির জন্য বাউনের পরিমাণ নির্দিষ্ট করে থাকেন, এটি সাধারণত 10 মিমি - 20 মিমি প্রায়।


লোকেরা কেন এটিকে ভোট দিচ্ছে?
টবি জ্যাফি

কী রিলিজ ডিবাউসিং সম্পর্কে ভাল পয়েন্ট!
ভিনসেন্ট ভ্যান ডেন বার্গে

1
আমি এটিকে কম করে দেখিনি, তবে কেবল এটি সফ্টওয়্যারটিতে করার কথা বলা একটি ভয়াবহ ধারণা। বৈশিষ্ট্যযুক্ত করা ভাল ধারণা।
কর্টুক

আমি "সাধারণভাবে" বলেছিলাম, যা এটি ক্ষেত্রে, এবং কারণটি দিয়েছি। এটি বিওএম ব্যয়কেও হ্রাস করে এবং নির্ভরযোগ্যতা বাড়ায়।
লিওন হেলার

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

1

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

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


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

@ লন্ডিন - যদি টাইমারগুলি উপলভ্য থাকে তবে আপনি পোলযুক্ত পদ্ধতির বাস্তবায়নের জন্য টাইমারটি ব্যবহার করতে পারেন, এবং স্যুইচটি মোটেই বাধা সৃষ্টি করতে বিরক্ত করবেন না।
জাস্টজেফ

0

যে কোনও উপায় হ'ল সর্বোত্তম উপায় হ'ল উপায় যা আপনার পক্ষে সবচেয়ে উপযুক্ত। তবে আপনার যদি ইতিমধ্যে একটি মাইক্রোকন্ট্রোলার থাকে আপনি কেবলমাত্র কিছু কোড প্রচেষ্টার ব্যয়ে সফ্টওয়্যারটিতে আত্মপ্রকাশ করতে পারেন।

সফ্টওয়্যার-এ ডেবিউ করার সবচেয়ে সহজ উপায় হ'ল মুহূর্তের মধ্যে যে বোতামগুলি দীর্ঘতম বাউন্স সময়ের চেয়ে আরও আলাদা are ৫০ এমএস 'স্বাভাবিক' স্যুইচগুলির বাউন্স টাইমের উপরের বাউন্ড বলে মনে হয়, সুতরাং আপনি যখন নিজের সফ্টওয়্যারটি এভাবে সাজিয়ে নিতে পারেন তখন আপনি পরিষ্কার হয়ে যাবেন:

forever loop
   wait (at least) 50 ms
   check buttons
   do procesing
end loop

এবং এর জন্য আপনার এমসিইউতে অন-চিপ টাইমার ব্যবহার করুন।
লন্ডিন

এটি অবশ্যই সম্ভব, তবে আপনি প্রচুর প্রোগ্রাম ছাড়াই লিখতে পারেন।
ওয়াউটার ভ্যান ওইজেন

3
মানসম্পন্ন পণ্যগুলিতে পেশাদার সফ্টওয়্যার সর্বদা অন-চিপ টাইমার ব্যবহার করবে। শখের লোকেরা লুপ বা মৃত অপেক্ষার ভোটদানের জন্য কিছু "এনওপি" নিয়ে পালাতে পারেন। তবে আসল পণ্যগুলিতে এটি করার কোনও কারণ নেই, আপনার রিয়েলটাইমের প্রয়োজনীয়তা বিবেচনা করুন। "আমি জানি না কীভাবে টাইমার কাজ করে এবং এই মৃত লুপটি আমার অলস স্বরে লিখতে 10 সেকেন্ড সময় নেয়" কোনও ইঞ্জিনিয়ারের পক্ষে বৈধ যুক্তি নয়।
লুন্ডিন

ষাঁড়। পেশাদারদের অবশ্যই কার্যকর হতে হবে, যা (হাতের প্রকল্পের উপর নির্ভর করে) বোঝাতে পারে (অন্যান্য জিনিসগুলির মধ্যে) 'যথাসম্ভব কার্যকরভাবে হার্ডওয়্যারটি ব্যবহার করতে' বা 'পেশাদারের সময় যতটা সম্ভব কার্যকরভাবে ব্যবহার করা' can সুতরাং আপনার আগমন অবশ্যই কিছু ক্ষেত্রে প্রযোজ্য (সম্ভবত আপনি যে সমস্ত ক্ষেত্রে মোকাবেলা করেছেন) এটি অবশ্যই সব ক্ষেত্রে প্রযোজ্য নয়।
ওয়াউটার ভ্যান ওইজেন

অন-চিপ টাইমার প্রয়োগ করতে আপনার বেশিরভাগ সময় এক ঘন্টা সময় নেয়। এটি খুব জটিল কিছু নয়, এটি হ'ল নিত্য রুটি এবং মাখন ইঞ্জিনিয়ারিং। উল্লেখযোগ্যভাবে আরও ভাল সমাধান এবং সামগ্রিক উন্নত মানের জন্য আপনি নিজের প্রকল্পে এক ঘন্টাও বিনিয়োগ করতে পারবেন না? হ্যাঁ ভাল ... আপনি যদি প্রোগ্রামিং সম্পর্কে বেশি কিছু না জানেন তবে এটি আপনার এক সপ্তাহ সময় নিতে পারে। তবে তারপরে সম্ভবত আপনার প্রথম স্থানে সফ্টওয়্যার নিয়ে কাজ করা উচিত নয় ... বা সম্ভবত আপনার এটির সাথে আরও কাজ করা উচিত , তাই আপনি অল্প সময়ে এই সাধারণ সামান্য জিনিসটি বাস্তবায়ন করতে শিখবেন।
লুন্ডিন

0

ডিবাউনিংয়ের একটি পদ্ধতির যা এখনও উল্লেখ করা হয়নি তা হ'ল একটি ডাবল-থ্রো সুইচটি ব্যবহার করা যা একটি ফোঁটা ভিডিডি এবং অন্যটি স্থলভাগে আবদ্ধ থাকে। এটি একটি পিনে খাওয়ান যা (হয় সফ্টওয়্যার বা হার্ডওয়্যার মাধ্যমে) দুর্বলভাবে তার বর্তমান অবস্থায় টানবে। এই জাতীয় দৃষ্টিভঙ্গি ডাবল-থ্রো সুইচের সুবিধাগুলি সরবরাহ করবে তবে কেবল দুটিয়ের চেয়ে একটি I / O পিন লাগবে।

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