Je veux utiliser un Raspberry Pi comme serveur XBMC dans la voiture. Les documents XBMC disent que vous devez toujours utiliser la commande d' arrêt avant de déconnecter l'alimentation. Je ne veux pas avoir à dire à ma femme de se connecter au Pi et de l'éteindre avant d'éteindre la voiture - je veux pouvoir
J'ai pensé qu'il devrait être possible de créer un circuit simple avec un condensateur et probablement une diode pour détecter le moment où l'alimentation a été déconnectée (et déclencher une interruption sur l'une des broches GPIO) mais le condensateur fournirait du courant assez longtemps pour que le système s'arrête correctement.
Cela semble-t-il correct et suffisant?
Le circuit sera alimenté par une batterie de voiture - 12,6 à 11,7 V. Le Raspberry Pi prend 5 V (5,25 à 4,75 V) et consomme 700-1200 mA. Je ne l'ai pas encore chronométré, mais je suppose que le processus d'arrêt prend probablement environ 5 secondes.
Je suppose donc que ce que je dois savoir est:
De quel type de condensateur aurais-je besoin pour stocker suffisamment de charge pour que le Pi fonctionne suffisamment longtemps pour que le XBMC s'arrête correctement?
Étant donné que le port GPIO du Rasperry Pi prend 3,3 V, quel est le meilleur comparateur / ampli opérationnel à utiliser (je suppose que je pourrais utiliser quelques résistances pour réduire la sortie de 5 à 3,3)
Y aurait-il un avantage à avoir la ligne GPIO normalement haute ou normalement basse?
la source
Réponses:
Une stratégie alternative serait d'alimenter le Raspberry Pi en continu et d'utiliser la ligne d'allumage pour lancer la séquence de mise hors tension. Je l'ai fait dans le passé mais avec des systèmes où la solution exacte ne s'appliquerait pas à un Pi mais en général:
Utilisez un convertisseur DC-DC pour la meilleure efficacité, il existe de nombreux exemples, mais ce qui suit est un exemple de quelque chose qui serait pratique à utiliser et il peut fournir 1 A à 5 V d'une entrée de 6,5 V à 32 V:
http://www.digikey.com/product-detail/en/V7805-1000/102-1715-ND/1828608
Une alimentation de voiture peut être assez difficile, vous pouvez donc utiliser une diode TVS 30V sur l'entrée pour vous protéger contre les pointes avec une grosse diode Schottky avec l'anode à la masse et la cathode à l'entrée 12V pour vous protéger contre les tensions négatives avec un fusible normal ou un fusible réarmable PTC en série avec la connexion entre l'alimentation de la voiture et votre système. Sinon, vous pourrez peut-être pirater un chargeur de voiture vers USB qui devrait déjà avoir tout cela en place.
Je ne suis pas sûr de ce qu'un Raspberry Pi dessine en mode veille normal, mais probablement bien en dessous de 500mA, ce qui est le maximum que l'USB peut fournir et plus probablement 100mA. Supposons qu'il utilise 100mA à 5V qui sera inférieur à 50mA à 12V en utilisant ce circuit, une batterie de voiture est normalement de l'ordre de 50Ah, ce qui prend environ 20 jours pour décharger la batterie à 50%. Si la voiture est utilisée régulièrement, il n'est probablement pas nécessaire d'aller plus loin, et vous pouvez simplement la laisser en marche et éteindre tout périphérique que vous n'utilisez pas.
Sinon, pour détecter le changement d'allumage dans les deux sens et informer le Pi qu'il doit s'arrêter, puis couper l'alimentation une minute plus tard, le moyen le plus pratique est probablement d'utiliser un microcontrôleur externe qui pilote un FET. Cela peut être fait avec une logique discrète, mais vous devez également vous assurer que la puissance est rétablie lorsque le contact est élevé, donc ce n'est pas un exercice tout à fait banal, mais les coûts des pièces seront inférieurs à ceux d'un gros capuchon.
la source
Je ne connais pas intimement le comportement du Raspberry Pi pour l'arrêt et la consommation d'énergie, je vais donc principalement compter sur les chiffres que vous avez donnés et laisser les formules.
La courbe de décharge exponentielle que vous montrez concerne un circuit résistance-condensateur, mais le régulateur linéaire fait que les choses agissent un peu différemment. Supposons que le RPi consomme toujours le courant maximum que vous avez indiqué: 1200 mA. Dans ce cas, ce courant traverse toujours le régulateur et la résistance effective du circuit change constamment (diminue) à mesure que le condensateur se décharge. Cela est vrai tant que nous sommes dans la plage de fonctionnement du régulateur linéaire, ce qui est bien car nous avons besoin que le RPi soit arrêté avant de toucher cette région.
L'équation différentielle pour un condensateur est:
Cela donne le résultat suivant:
Oui, c'est 1,28 Farads (pas de micro ou milli ici). Cela impliquerait probablement l'achat de plusieurs bouchons basse tension et leur mise en série
Alors, l'autre problème est votre circuit - il ne fonctionnera pas comme vous le souhaitez, car la seule façon dont l'entrée positive du comparateur se rapproche de la tension d'entrée négative (afin que la sortie puisse changer) est lorsque votre tension d'entrée est déjà mort. Tel que conçu, le comparateur ne changerait jamais.
Ce que vous voulez faire, c'est mesurer votre tension d'entrée, avant les condensateurs et la diode, et comparer cette tension avec une "référence" que vous pouvez définir avec un potentiomètre. Voir l'exemple de circuit ci-dessous:
simuler ce circuit - Schéma créé à l'aide de CircuitLab
la source
Remarque: la réponse suivante a été écrite en supposant que seule l'utilisation par le système de fichiers d'une carte SD pouvait être corrompue. De nombreuses preuves anecdotiques ont été révélées depuis lors pour suggérer que l'état interne des cartes SD elles-mêmes, en dessous du niveau de tout système de fichiers, est potentiellement à risque de corruption en raison d'une perte d'alimentation intempestive, quelque chose qu'il peut ne pas être possible de contourner à niveau du système de fichiers.
Je serais tenté d'envisager une approche entièrement différente, celle de résoudre le problème à sa source. Essentiellement, il n'y a rien de fondamentalement mauvais à retirer simplement le pouvoir du pi; le problème est un état du système de fichiers potentiellement non engagé entraînant une corruption du système de fichiers et un échec de démarrage ultérieur jusqu'à ce que vous répariez / réimagiez le volume.
Mais c'est quelque chose qui peut être résolu du côté logiciel, par une combinaison de:
Créez plus de partitions sur la carte SD et ne montez jamais la partition de démarrage ou de système d'exploitation en mode accessible en écriture. Si vous voulez aller plus loin, n'écrivez jamais rien sur la carte SD, gardez toutes vos données mutables sur une clé USB.
Utilisez un système de fichiers de journalisation pour stocker les données qui seront réellement modifiées en cours de fonctionnement.
Gardez simplement une carte de sauvegarde à portée de main, éventuellement cela pourrait être un schéma de sauvegarde et de récupération automatique à partir d'une carte connectée avec une règle selon laquelle une seule des cartes peut être montée en écriture à tout moment (combinée avec la première règle du système de démarrage / d'exploitation) partitions jamais inscriptibles)
En fin de compte, cela se résume à une question de philosophie de conception - le choix entre:
A) Un système délicat qui doit être protégé des coupures de courant moins qu'il ne subisse de corruption
ou
B) Un système conçu de telle sorte qu'une perte d'alimentation inattendue ne peut pas entraîner une corruption irrécupérable.
La plupart des systèmes embarqués sont plus dans le sens de (B).
la source
Comme d'autres l'ont souligné, il y a quelques problèmes avec les circuits proposés jusqu'à présent, et vous pouvez également obtenir un condensateur assez grand pour contenir l'alimentation. Si vous êtes prêt à construire un petit circuit, vous pouvez envisager un contrôleur de mise sous / hors tension à verrouillage qui est actionné par bouton-poussoir. Pour éteindre le serveur XBMC, vous pouvez appuyer sur un bouton qui signale au Pi de s'arrêter, il peut alors faire ce dont il a besoin pour un arrêt ordonné et propre, puis émettre un signal GPIO vers le circuit qui se coupe lui-même. Cela donne au RPi autant de temps qu'il le faut pour faire des choses comme arrêter la carte SD en toute sécurité. Le circuit n'a pas besoin d'être aussi complexe qu'un relais et une minuterie.
Voici un circuit simple pour le faire , qui utilise uniquement un double mosfet comme contrôleur. Le circuit est décrit sur la page Web.
la source