
印刷会社の「すべてのエンジニア」としての仕事の過程で、日常生活では通常見られないいくつかのトリッキーなデバイスの修理とアップグレードに対処する必要があります。 私の「お気に入り」の1つは、憂鬱なスウェーデンの天才、 Rapid 106電動ホッチキスの発案です。 一方では、最古の「急速な」は2000年代の初め以来私達のために働いていました、これは指標です。 一方、それらには十分な問題があります。 一部のジョークは特定の電子機器に関連しています。
そして、忍耐の杯が一杯になったら。 当時、「高速」はネットワーク干渉とはあまり関係がなく(強力な周波数ドライブが近くにある)、最近言ったのは「FOOT!」で、電源が入らず、新しいデバイスには約4万ルーブルかかることを知っていました。 。
まず、マザーボードをリバースエンジニアリングしたかった。 しかし、その過程で、オリジナルの技術的ソリューションのいくつかが断固として好きではないと判断しました。 確かにそうですが、「簡単にする方法」という概念はすでに頭の中で形になっています。 電動ステープラーなど、一見シンプルなデバイスの回路のいくつかの機能を次に示します。
1. 4つの超小型回路-2つのマルチバイブレーター、1つのカウンター、1つのトリガーセット。
2.他の100の要素の下。
3.超小型回路の電源(1分間、CMOS!)は、ネットワークからのガルバニック絶縁なしで実装されます。
4.ステープラーを他の機器と光学的に同期させるためのスキームがあります。 2つのステープラーを「インライン」で使用できます。 使用されたことはありません。
5.ステイプラ電磁石はトライアックによって切り替えられます。

ネイティブエレクトロニクスホッチキス
これらの点のうち、強い意志による決定により、最初の4つは不要と見なされます。 新しい動作原理を形成しました:
1.典型的なMOC3052オプトカプラー接続を使用して、電磁石を制御します。 パワートライアックとスナバ(抵抗とコンデンサ)は新しい回路に移行します。
2.フォトカプラへの制御パルスは、マイクロコントローラによって提供されます。
したがって、ATTiny13Aがあり、コンパレータ(ゼロを介した主電源電圧の遷移を検出するため)、ADC(ショックパルスの出力の遅延を設定する可変インピーダンス)、1つの入力(ペダルボタン)、および1つの出力(パルスを発行するため)を使用します。
サイン波のカットについて
電磁石を制御するトライアックは、制御電圧が印加されると開き、主電源電圧がゼロを通過すると閉じます(制御電圧がない場合)。 トライアックは、ゼロまたは半サイクルの一部で開くことができます。 ゼロで開くと、すべてが非常に美しく人道的になり、電圧の急激な増加による干渉はありませんが、整数の半周期でしか動作できません。 MOC306xオプトカプラーにはゼロ検出器が組み込まれています。つまり、ゼロでのみオンとオフを切り替えます。 実際、これをパワートライアックと組み合わせると、ソリッドステートACリレーが得られます。

アクチュエータ
しかし、私たちの場合、すべてが悪化しています。 制御原理による「ラピッド」は、ソリッドステートリレーのようなものではなく、調光器のようなものです。 つまり、オペレータのコマンドで、コントロールユニットは半サイクルの特定の場所でトライアックをオンにする必要があります。 ゼロに達すると、自動的にオフになります。 衝撃力は、半周期セクションが関与する大きさに依存します。 そこで、ゼロ検出回路のないMOC305xオプトカプラーを使用します。
仕様
そのため、操作アルゴリズムが定義されます。
1.オペレーターによるペダルの踏み込み。
2.トライアックの遅延の決定。 可変抵抗器の位置(VccとGNDの間の分周器、ADC入力での平均出力によって有効)に応じて、指定範囲(実験的に選択、3〜5 ms)にある遅延(ms)が計算されます。
3.ゼロ主電源電圧の検出(マイクロコントローラーコンパレーターを使用)。
4.練習の遅れ。
5.フォトカプラに持続時間1 msの制御パルスを発行します。
レーキは段落番号3にありました。 ゼロマイクロコントローラーをキャッチする方法は? 最も簡単な解決策は、分圧器からの1つのコンパレータ入力にネットワーク電圧を与え、2番目の入力にゼロ(もう1つの分圧器から)を少し加えることです。 この場合、回路の高電圧部分と低電圧部分のガルバニック絶縁が破られ、実際の状態では不快なノイズ耐性とランダムなトリップが発生します。 これで、内部ジェダイは私に言った:「額の問題を解決する。」 解決策は次のとおりです。どこかから9 V ACを出力する小さな汚れた変圧器を引き出しました。 2つの低電力ダイオードブリッジがその出口に配置されます。 一方では測定された脈動電圧を取得し、他方ではコンデンサと安定器を配置します-これはマイクロコントローラの電力です。 そして、ここに彼女は安定しています!
実装の詳細

新しいボード
スキーム-イーグル、配線-スプリントレイアウト。 ファームウェア開発-Sublime Text(Sublime-AVR)。 MKのプログラミング-ChipProg-40。 ボード上のISPは単純化のために離婚していません-ハードウェアでのデバッグには少し時間がかかり、ボードからプログラマーへ、またはその逆へのMKの最大数十の歪みが生じました。
ファームウェアコード
#include <avr/io.h> #include <util/delay.h> #define F_CPU 1200000UL // #define MINDELAY 3 #define MAXDELAY 5 // PB4. - . #define PEDAL PB4 // - PB3. - . #define FIRE PB3 void delaymsMod(unsigned char ms) // , _delay_ms . // . { for (unsigned char counter=0; counter<ms; counter++) { _delay_ms(1); } } unsigned char fireDelay(void) // . . . // , 0 // , , // , . . { // ACD - ACSR |= (1 << ACD); // 5 - ADLAR, . 8 ADCH // 0-1 - . 01 . ADC1 (PB2) ADMUX |= 0b00100001; // ADPS2-1-0 . 011 . 8 // 150 (1.2 / 8) ADCSRA |= (1 << ADPS1) | (1 << ADPS0); // ADCSRA |= (1 << ADEN); // ADCSRA |= (1 << ADSC); // , while (ADCSRA & (1 << ADSC)); // 8 unsigned char rawADC = ADCH; // ADCSRA &= ~(1 << ADEN); // return MINDELAY + rawADC * (MAXDELAY - MINDELAY) / 255; } void waitForZero(void) // . . . { ACSR &= ~(1 << ACD); _delay_ms(1); while ((ACSR & 0b00100000) == 0b00100000); ACSR |= (1 << ACD); } unsigned char pedal(void) // . . . { unsigned char pressed = 0; // // , unsigned char pressedTime = 100; if (PINB & (1 << PEDAL)) // , , 1 { pressed = 1; for (unsigned char counter=0; counter < pressedTime; counter++) { // , // , 0 - if ( !(PINB & (1 << PEDAL))) { pressed = 0; } _delay_ms(1); } } return pressed; } void fire(void) // 1 { PORTB |= (1 << FIRE); _delay_ms(1); PORTB &= ~(1 << FIRE); } void setup(void) { // DDRB=0b00001000; } int main(void) { setup(); while (1) { if (pedal()) { waitForZero(); delaymsMod(fireDelay()); fire(); while(pedal()); } } return -1; // }
追加の設置スキルを習得するために、回路の低電圧部分のSMD抵抗器(1206)とコンデンサ(0805)が使用されました。 ボード製造技術:
1.いくつかのテキソライト。 硬い食器洗いスポンジとPemoluxを使用したクリーニング。
2.フィルムフォトレジスト(Ordyl Alpha 350)。 GMPラミネーターを使用したロールイン(120度、最低速度)。
3.フォトマスク(透明フィルム、沖9655プリンター)。
4. 20ワットのUV節約ランプによる照明(6分)。
5.過剰な洗浄(カリ)。
6.エッチング(塩化第二鉄、水浴、柔らかいブラシによる定期的な露出)。
7.穴あけ、錫メッキ、シーリング、テスト。

SMDオンザニーおよび配線エラー修正
合計
多くの時間を費やしました。 アイデアから実装まで2週間が経過し、私は「無料労働時間」でプロジェクトに従事しました。 しかし今では、シンプルで理解しやすく、安価で、簡単に再現できるステープラーコントロールユニットがあります。 追加のスキルが得られました-負荷を制御するためのフォトカプラとトライアックの使用。
すべての開発はgithubにあります。
UPD。 ビデオを追加しました。 悪いカメラでティーパーティーを撮影したが、一般的なアイデアを与えます。 最初の2つのヒットは、ステープルヘッドがほぼ完全に殺されたため「アイドル」であり、一般的な概念のデバッグに使用されました。